使用 winforms我想知道是否有某种方法可以防止垂直调整表单大小.我想允许用户在垂直方向上的所有方向上调整表单大小.另外我想允许在向上方向上垂直调整大小,但不允许向下调整大小
我尝试使用maximumsize将其设置为:Me.maximumsize = new size(0,me.height)
我将宽度设置为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; } } }