窗体的MaxButton 属性False、窗体的BorderStyle 属性1、窗体的Moveable 属性 False、窗体的MinButton 属性True
成都创新互联公司从2013年创立,先为淮滨等服务建站,淮滨等地企业,进行企业商务咨询服务。为淮滨企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
很简单,通过WindowsAPI,删除窗体菜单项就行了
首先在窗体类中声明API:
Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As IntPtr, ByVal bRevert As Boolean) As IntPtr
Declare Function RemoveMenu Lib "user32" (ByVal lngHmenu As IntPtr, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer
其次声明API参数常量:
Const MF_BYPOSITION As Integer = H400
然后在窗体类中写入过程:
Private Sub UserForm_Initialize_stopmove() '禁止窗体移动
Dim lngHwnd As IntPtr
Dim lngHmenu As IntPtr
lngHwnd = Me.Handle
If lngHwnd 0 Then
lngHmenu = GetSystemMenu(lngHwnd, False)
RemoveMenu(lngHmenu, 0, MF_BYPOSITION) '这里的0代表菜单中从上往下数第一个菜单项
End If
End Sub
Private Sub UserForm_Initialize_onmove() '恢复窗体移动
Dim lngHwnd As IntPtr
Dim lngHmenu As IntPtr
lngHwnd = Me.Handle
If lngHwnd 0 Then
lngHmenu = GetSystemMenu(lngHwnd, True)
RemoveMenu(lngHmenu, 0, MF_BYPOSITION) '这里的0与禁止代码中的数值同步,原因时虽然表面上删除了菜单项,实则为隐藏了菜单项,各个菜单的索引值并没有变,所以0依然代表初始菜单的第一个菜单项,即被删除的那个菜单项
End If
End Sub
然后如果你的窗口菜单是动态变化的,建议声明常数:
Const MF_BYPOSITION As Integer = H0
然后使用相关的Windows功能的常数进行删除菜单。常数需要自行查看winuser.h头文件
如果找不到该头文件,可以看这里:网页链接
其余信息详见MSDN:网页链接
最后说一下,不建议前面网友说的重写WndProc的方法,因为这样拦截标题栏点击消息会导致窗体本身的菜单也无法显示出来,有损窗体功能,并且像双击左上角图标关闭窗体这样的功能也会跟着拦截消息的操作一起被吞掉。
vb.net设置一个窗体为,宽度不能调节,而高度可以调节,
代码设置方法:
Dim form_width As Integer = Me.Width
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
If Me.Width form_width Then
Me.Width = form_width
'Debug.Print(TimeString "-" CStr(Me.Width))
End If
End Sub
vb.net,即Visual Basic.NET是基于微软.NET Framework之上的面向对象的编程语言。其在调试时是以解释型语言方式运作,而输出为EXE程序是是以编译型语言方式运作。可以看作是Visual Basic在.Net Framework平台上的升级版本,增强了对面向对象的支持。
好像你问的有点歧义。
1.如果是 禁止窗体移动 的话
令窗体的Moveable属性为False
2.如果是 禁止窗体改变大小 想留住 最小化按钮
令窗体的MaxButton属性为False
Private Sub Form_Resize()
If Me.WindowState = 1 Then Exit Sub '防止最小化时出错
If Me.Width 8475 Then Me.Width = 8475'Me.Width Me.Height这两个值为最开始窗体的width、height属性值
If Me.Height 5310 Then Me.Height = 5310
End Sub