我正在开发一个简单的叠加应用程序,边框样式设置为“无” 我希望能够拖动我的Winform,无论我是否点击表格或其控制。
我找到了这个片段:
protected override void WndProc(ref Message m)
{
switch(m.Msg)
{
case 0x84:
base.WndProc(ref m);
if ((int)m.Result == 0x1)
m.Result = (IntPtr)0x2;
return;
}
base.WndProc(ref m);
}
move a c# form without border style (by ShaneB)
如果我没有点击控件,这个片段允许我使表单可拖动
在触发mouseDown事件时,Form也应该可以在其他控件上拖动(如groupbox)。
备注:如果可能,仍然可以选中/取消选中复选框。如果最后一点应该是复杂的,我可以解决这个问题。
答案 0 :(得分:0)
我能够通过返回-1来解决我的问题。 (m.Result = (IntPtr)(-1);
)
非常感谢Hans Passant的建议。
我只需要从GroupBox派生一个新类并覆盖WndProc(),如下所示:
public sealed partial class CustomGroupBox : GroupBox
{
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 0x84:
base.WndProc(ref m);
if ((int)m.Result == 0x1)
m.Result = (IntPtr)(-1);
return;
}
base.WndProc(ref m);
}
}