使用 Windows 窗体,我想知道是否有某种方法可以防止垂直调整窗体的大小。我想允许用户在除垂直之外的所有方向上调整表单的大小。此外,我想允许向上垂直调整大小,但不能向下调整。
我试图通过将其设置为: Me.maximumsize = new size(0, me.height) 来使用maximumsize
我将宽度设置为 0,因为我想允许用户更改表单宽度。
不幸的是它不起作用。
有任何想法吗?
最佳答案
您必须小心让表单在启动时自行调整大小。有必要适应具有不同视频 DPI 设置或不同系统字体大小的机器所需的缩放。或者用户覆盖改变了标题栏的高度。所有这些都在 Load 事件运行时整理出来。因此:
protected override void OnLoad(EventArgs e) {
Screen scr = Screen.FromControl(this);
this.MinimumSize = new Size(this.MinimumSize.Width, this.Height);
this.MaximumSize = new Size(scr.WorkingArea.Width, this.Height);
}
您应该做的下一件事是当用户将光标移动到允许垂直调整窗口大小的窗口边缘时修复光标的行为。这有点难看;您必须使用 WndProc 捕获 WM_NCHITTEST 消息并更改消息返回值:
protected override void WndProc(ref Message m) {
base.WndProc(ref m);
if (m.Msg == 0x84) { // Trap WM_NCHITTEST
switch (m.Result.ToInt32()) {
case 12: m.Result = (IntPtr)2; break; // HTTOP to HTCAPTION
case 13: m.Result = (IntPtr)10; break; // etc..
case 14: m.Result = (IntPtr)11; break;
case 15: m.Result = (IntPtr)1; break;
case 16: m.Result = (IntPtr)10; break;
case 17: m.Result = (IntPtr)11; break;
}
}
}
关于vb.net - 如何防止在 VB.NET Windows 窗体中垂直调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2666788/