Arv*_*wen 5 c# size visual-studio-2010 winforms
所以我创建了一个表单布局并尝试在其上设置MinimumSize,但却发现WinForms非常合适!所以这就是我开始使用MinimumSize属性设置为宽度时的样子...

你可以看到它看起来很棒,没有额外的空格,表单是我想要的大小等等......然后,我尝试关闭表单并将其打开,我有一点奇怪(MinimumSize高度设置为0现在WinForms已经成功了38)但不管它仍然按预期工作..

确定好就的minimumSize,高度奇"38"是奇怪,但不管,让我尝试我者优先的minimumSize,高度设置为420(尺寸相同的形式).

保存,关闭表单设计师并重新打开... WTF?一切都出了差错!我在底部的三个按钮都被拉高,因此具有文本框和TreeView控件我把它上面,以及左侧列表视图高度已经调整.事实上,看着它似乎控件的大小仍然是正确的.已更改的变量是表单大小.它有点从420到442 ???

任何人都知道为什么会这样?我可以做些什么来修复它,或者我想解决它?请记住我有按钮,文本框固定在底部.树视图需要保持固定在顶部,并随着窗口的大小调整而增长.
谢谢!
这当然是设计师的错误.它是由Winforms中的一个功能引起的,它通常是设计者的麻烦制造者,它实际上从未存储过Size属性.您可以在表单的Designer.cs文件中的自动生成代码中看到的内容.相反,它存储ClientSize并基于该值计算大小.一个非常必要的功能,标题栏的高度是不可预测的,这取决于用户配置.
在您的情况下触发错误的是将ControlBox属性设置为False.这也禁用了Icon,并对外部尺寸进行了计算.我认为,与分配属性的顺序有关,Form类应该实现ISupportInitialize但不是.MinimumSize.Height的值38是副作用,即机器上标题栏的高度.你不能让窗口小于那个.在设计时也应用的约束,另一个怪癖.
解决方法很简单.将ControlBox属性设置回True,并在Form构造函数中设置其值:
public Form1() {
InitializeComponent();
this.ControlBox = false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1447 次 |
| 最近记录: |