将表单大小调整限制为水平[重复]

2024-01-09

可能的重复:
C# 中的垂直(仅)可调整大小的窗口窗体 https://stackoverflow.com/questions/2140882/vertically-only-resizable-windows-form-in-c-sharp

我有一个情况,我需要允许用户水平调整表单大小。表格的最大宽度为x。我怎样才能做到这一点?


将MaximumSize 和MinimumSize 设置为相同的高度,但宽度可变。

为了使调整大小光标不会出现在顶部或底部:

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.Top || result == HitTest.Bottom)
                m.Result = new IntPtr((int)HitTest.Caption);
            if (result == HitTest.TopLeft || result == HitTest.BottomLeft)
                m.Result = new IntPtr((int)HitTest.Left);
            if (result == HitTest.TopRight || result == HitTest.BottomRight)
                m.Result = new IntPtr((int)HitTest.Right);

            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
}

代码复制并修改自:C# 中的垂直(仅)可调整大小的窗口窗体 https://stackoverflow.com/questions/2140882/vertically-only-resizable-windows-form-in-c-sharp

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将表单大小调整限制为水平[重复] 的相关文章

随机推荐