Ben*_*Ben 35 c# resize winforms
我有一种情况,我允许用户调整窗体大小,但只能垂直调整窗口大小.经过一番搜索,似乎这个特定的主题并不多.可能吗?
SLa*_*aks 75
您需要将窗体MinimumSize
和MaximumSize
属性设置为具有不同高度但宽度相等的两种尺寸.
如果您不希望水平调整大小光标出现,则需要处理WM_NCHITTEST
消息,如下所示:
protected override void WndProc(ref Message m) {
base.WndProc(ref m);
switch (m.Msg) {
case 0x84: //WM_NCHITTEST
var result = (HitTest)m.Result.ToInt32();
if (result == HitTest.Left || result == HitTest.Right)
m.Result = new IntPtr((int)HitTest.Caption);
if (result == HitTest.TopLeft || result == HitTest.TopRight)
m.Result = new IntPtr((int)HitTest.Top);
if (result == HitTest.BottomLeft || result == HitTest.BottomRight)
m.Result = new IntPtr((int)HitTest.Bottom);
break;
}
}
enum HitTest {
Caption = 2,
Transparent = -1,
Nowhere = 0,
Client = 1,
Left = 10,
Right = 11,
Top = 12,
TopLeft = 13,
TopRight = 14,
Bottom = 15,
BottomLeft = 16,
BottomRight = 17,
Border = 18
}
Run Code Online (Sandbox Code Playgroud)
Pao*_*sco 12
只是一个想法......
public partial class Form1 : Form {
int _width;
public Form1() {
_width = this.Width;
InitializeComponent();
}
protected override void OnResize(EventArgs e) {
this.Width = _width;
base.OnResize(e);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:请注意,最小/最大尺寸解决方案比这个黑客工作得好:)