是否有办法控制可以移动表单的位置?
因此,如果我移动表单,它只能在垂直轴上移动,当我尝试水平移动它时,什么也不会发生。
我不想要一个有缺陷的实现,比如位置更改或移动事件并将其内联弹出。我没有办法使用 WndProc 覆盖之类的东西,但搜索了一段时间后,我找不到任何东西。请帮忙
例如:
using System.Runtime.InteropServices;
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x216) // WM_MOVING = 0x216
{
Rectangle rect =
(Rectangle) Marshal.PtrToStructure(m.LParam, typeof (Rectangle));
if (rect.Left < 100)
{
// compensates for right side drift
rect.Width = rect.Width + (100 - rect.Left);
// force left side to 100
rect.X = 100;
Marshal.StructureToPtr(rect, m.LParam, true);
}
}
base.WndProc(ref m);
}
上面的代码将最小左侧位置设置为 100。
无需像 driis 那样重新创建 RECT 结构,.NET 原生 Rectangle 可以正常工作。但是,您必须通过 X 属性设置位置,因为 Left 是仅获取属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)