所以我正在阅读那些在另一个问题中链接到的Windows Vista UI指南,并且他们提到您应该能够在切换到120 DPI后继续存在.好吧,我安装了我的应用程序,启动了我方便的虚拟机,我们得到了什么... AAAAGH !!! 大规模的UI失败!
一切都是乱七八糟的:一些容器对于他们的文本来说不够大; 一些"彼此相邻"的控件现在都被挤压在一起/分开; 有些按钮不够高; 我的ListView
专栏不够广...... eeek.
这听起来像是一种完全不同的方法.我之前的一个基本上是使用VS2008 Windows窗体设计器来创建一个基于像素的布局.我可以看到,如果我坚持使用Windows Forms,FlowLayoutPanel
s会有所帮助,尽管我发现它们在过去相当不灵活.它们也没有解决容器(例如表格本身)不够大的问题; 大概有办法做到这一点?也许那个AutoSize
属性?
这也可能表明是时候跳槽到WPF了; 我的印象是它专门为这种东西而设计.
基本问题似乎归结为以下几点:
如果我坚持使用Windows窗体,那么实现独立于字体大小的布局有哪些技巧可以在用户设置大字体或将显示设置为120 DPI后继续存在?
WPF在这方面是否具有显着的优势,如果是这样,你能否试着说服我这是值得转换的?
对于与字体大小无关的布局,是否存在任何通用的"最佳实践",无论是在.NET堆栈中还是在一般情况下?
OwenP.. 11
了解Anchor和Dock属性如何在控件上工作,留下任何可以单独使用AutoSize的东西,并尽可能使用TableLayoutPanel
.
如果你做这三件事,你将在Windows Forms中获得很多WPF设计经验.精心设计的产品TableLayoutPanel
将尽量调整控件尺寸,使其适合表格.结合AutoSize控件,对接和Soeren Kuklau提到的AutoScaleMode,您应该能够制作出可以很好地扩展的东西.如果没有,您的表单可能只有太多的控件; 考虑将其拆分为标签页,浮动工具箱或其他一些空间.
在WPF中,它更容易,因为自动调整大小控件的概念是内置的; 在大多数情况下,如果您使用坐标对放置WPF元素,那么您做错了.尽管如此,你无法改变这样一个事实,即在较低的分辨率下,它不需要花费很多120 dpi的文字来填满屏幕.有时问题不是你的布局,而是试图将太多的东西放入一个小空间.
了解Anchor和Dock属性如何在控件上工作,留下任何可以单独使用AutoSize的东西,并尽可能使用TableLayoutPanel
.
如果你做这三件事,你将在Windows Forms中获得很多WPF设计经验.精心设计的产品TableLayoutPanel
将尽量调整控件尺寸,使其适合表格.结合AutoSize控件,对接和Soeren Kuklau提到的AutoScaleMode,您应该能够制作出可以很好地扩展的东西.如果没有,您的表单可能只有太多的控件; 考虑将其拆分为标签页,浮动工具箱或其他一些空间.
在WPF中,它更容易,因为自动调整大小控件的概念是内置的; 在大多数情况下,如果您使用坐标对放置WPF元素,那么您做错了.尽管如此,你无法改变这样一个事实,即在较低的分辨率下,它不需要花费很多120 dpi的文字来填满屏幕.有时问题不是你的布局,而是试图将太多的东西放入一个小空间.