如何让form窗体不可移动?

a8lquattro 2010-09-10 06:12:25
新人求助,如何让form窗体不可移动?

具体情况如下:
1.将form嵌入panel控件中,设置dock属性为fill这样就实现了窗体的自动大小调整
2.但是debug的时候发觉那个嵌入的form还是可以用鼠标来移动的,有啥办法可以让其无法移动?

另外对于代码中mybase和me类不是很了解,只知道me代表当前(对象还是类?)的引用,具体两者的含义和区别能否告知下?谢谢啦
...全文
554 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxz054321 2010-09-12
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 simdanfeg 的回复:]
设置无边框属性 FormBorderStyle=None
[/Quote]
实用性不大啊
ElfSundae 2010-09-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]

Const WM_SYSCOMMAND As Integer = &H112
Private Const SC_MOVE As Integer = &HF010

Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_SYSCOMMAND AndAlso _
(m.WP……
[/Quote]


就这个。
可爱的小莱 2010-09-11
  • 打赏
  • 举报
回复
panel 的lock属性设置为 TRUE
  • 打赏
  • 举报
回复
设置无边框属性 FormBorderStyle=None
古今多少事 2010-09-11
  • 打赏
  • 举报
回复
api和WndProc两种思路都差不多,就是截获窗体移动的消息,如果是移动则取消。
avon_mall 2010-09-11
  • 打赏
  • 举报
回复
窗体属性
FormBorder = FixedDialog
清晨曦月 元老 2010-09-11
  • 打赏
  • 举报
回复
都很好撒。改变消息处理函数,或者处理消息处理函数。。或者也可以在窗体移动事件里处理。。。不过感觉楼上的消耗最少
古今多少事 2010-09-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wuyazhe 的回复:]
引用 1 楼 asdfy 的回复:
设置无边框试试或API:
GetSystemMenu
RemoveMenu
虽然不难,但好人做到底,写个例子吧。你和如梦的都对。但你的估计一劳永逸一次就行,写个例子~
[/Quote]

   Public Declare Function GetSystemMenu Lib "user32 " (ByVal hWnd As IntPtr, ByVal bRevert As Integer) As IntPtr
Public Declare Function RemoveMenu Lib "user32 " (ByVal hMenu As IntPtr, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer
Public Const SC_MOVE As Integer = 61456
Public Const MF_BYCOMMAND As Integer = 0
Public Const MF_DISABLED As Integer = 2
Public Const MF_GRAYED As Integer = 1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim f As New Form
f.TopLevel = False
f.Parent = Panel1
f.Show()
Dim hMenu As IntPtr = GetSystemMenu(f.Handle, 0)
RemoveMenu(hMenu, SC_MOVE, MF_BYCOMMAND Or MF_DISABLED Or MF_GRAYED)
End Sub

觉得还是2L的好些。。
cmrarczt 2010-09-11
  • 打赏
  • 举报
回复
设置他的相关属性
兔子-顾问 2010-09-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 asdfy 的回复:]
设置无边框试试或API:
GetSystemMenu
RemoveMenu
[/Quote]

虽然不难,但好人做到底,写个例子吧。你和如梦的都对。但你的估计一劳永逸一次就行,写个例子~
sunrisehy2003 2010-09-11
  • 打赏
  • 举报
回复
向大家学习
a8lquattro 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
Const WM_SYSCOMMAND As Integer = &H112
Private Const SC_MOVE As Integer = &HF010

Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_SYSCOMMAND AndAlso _
(m.WParam.ToIn……
[/Quote]

新人,不太懂这段代码,能讲解下吗?谢谢
a8lquattro 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 asdfy 的回复:]
设置无边框试试或API:
GetSystemMenu
RemoveMenu
[/Quote]

能否具体点?
wuyq11 2010-09-10
  • 打赏
  • 举报
回复
Const WM_SYSCOMMAND As Integer = &H112
Private Const SC_MOVE As Integer = &HF010

Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_SYSCOMMAND AndAlso _
(m.WParam.ToInt32() And &HFFF0) = SC_MOVE Then
m.Result = IntPtr.Zero
Return
End If

MyBase.WndProc(m)
End Sub

无边框窗体
古今多少事 2010-09-10
  • 打赏
  • 举报
回复
设置无边框试试或API:
GetSystemMenu
RemoveMenu

16,556

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧