【发布时间】:2012-09-26 21:01:29
【问题描述】:
【问题讨论】:
-
没有。它不是重复的。我读了那个问题,我希望你有这个问题作为参考。所以我想要那个用户想要的,但是水平调整大小。
-
@Victor 不过,技术是完全一样的。
-
不幸的是,我不知道如何管理该代码... :(
标签: c# windows winforms forms resize
【问题讨论】:
标签: c# windows winforms forms resize
将您的 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
}
【讨论】:
Form 具有 MaximumSize 和 MinimumSize 属性。
将它们设置为与 Size 相同,当然 MaximumSize 的 Width 除外。
禁用 MaximizeBox 也可能是个好主意,因为它并没有多大意义(它只会将窗口放在当前监视器的左上角)。
【讨论】:
您可以创建一个静态变量来保存它可以拥有的 mex 值。
在表单调整大小事件中,您可以检查该值是否大于您的静态值并将其更改为该值:
int maxValue = 100;
private void MainForm_ResizeEnd(object sender, EventArgs e)
{
if(this.Size.Width > maxValue)
this.Size.Width = maxValue;
}
或者您可以在属性中设置最大值: 最大尺寸
【讨论】:
将窗体的最小和最大高度设置为窗体的初始高度。 这应该防止表单垂直调整大小,并允许用户仅水平调整表单大小。
如果要设置水平调整大小的范围,请对表单的最小或最大宽度执行相同操作。
【讨论】:
在表单 SizeChanged 事件中,你可以做这样的事情
private void Form1_ResizeEnd(object sender, EventArgs e) {
//this does not prevent a resize to full screen
int i = this.Size.Height;
//force width to 300
this.Size = new Size(300, i);
return;
}
【讨论】: