基本上,我希望在通过拖动调整大小时,使用WindowsForm缩放所有内容(控件等),以便用户可以自己确定UI的大小。 图片并不完美,但我希望能解释一下:
最简单的方法是使用(流/表格)LayoutPanel和相应的Anchor / Drop属性,但我觉得这限制了我的设计,目前看起来像这样:
我的想法是在调用Resize()时缩放所有组件:
foreach(Control c in Controls){
c.Scale(scaleFactor);
}
我的问题是:地点设置不正确,确定'scaleFactor'所需的舍入会导致不一致。
有没有干净的方法来做这一切?我是否必须使用LayoutPanels来获得干净的方式?
答案 0 :(得分:1)
您确定要缩放这些文本框和标签吗?例如,文本框具有相当标准的高度。如果窗口太小以至于文本对于按钮/文本框等太大,您会有什么期望?
可调整大小窗口内容的典型调整大小逻辑略有不同。我宁愿为groupboxes创建一个无边框面板,并像这样堆栈/停靠所有内容:
如果我调整此窗口的大小,它将如下所示:
是的,我不喜欢按钮是否像这样重新调整大小。我只会使用Anchor = Left, Right
,所以他们会保留自己的身高。并且不要忘记为表单设置正确的MinimumSize
。
答案 1 :(得分:-1)
最简单,最干净的方法是使用布局平移 很难对控件的位置进行编码,这取决于先前控件的位置和大小(当您知道控件的顺序时,请注意这种情况)。
在WPF中,一切都在ContentControl上,即布局面板。控制位置自动计算。
另一个问题可能是在组合框中缩放字体或字形图标。在WPF中这是最简单和最受支持的。