这是我之前的问题“依赖字体的控制定位”的后续。它试图解决该问题背后的真正问题,可能以不同于我所询问的方式。
问题陈述示例:我想要一个复选框,上面写着“加载后按<X> <Y>调整价格”,其中<X>是一个数字---可以用 --- 调整,NumericUpDown
而<Y>是“百分比”或“美元”,选择由ComboBox
. 这将在一行上。
复杂性:我希望能够更改所有这些控件的字体(基本上将它们设置为System.Drawing.Fonts.MessageBoxFont
,在 Windows XP/etc 上是 Tahoma 8 pt,在 Vista 上是 Segoe UI 9 pt),而不会弄乱我的布局,其中我当前的Position
-property--setting 范例不起作用。
更一般地说,我希望控件以与字体无关的方式动态布局,以便<X> NumericUpDown
紧贴“by”和<Y> ComboBox
之间的空间,同样<X> ComboBox
适合关于<X> CheckBox
和其右侧的字符串“加载后”。
每个人似乎都错过的部分:这都嵌套在CheckBox
. 因此,理想情况下,单击“加载后”应该选中/取消选中复选框,并在“加载后调整价格”周围绘制那个小高亮矩形。所以只是在最后打一个额外Label
的耳光是行不通的,因为那样它就不会切换CheckBox
; Label
同样,尝试通过连接这样的'事件来创可贴Click
不会产生所需的高亮矩形。
解决方案?在这一点上,我在想:
以某种方式重新考虑这个问题,也许是一个丑陋的解决方案,比如两行单独的文本:“加载后调整找到的价格”(
CheckBox
),“调整金额:”(NumericUpDown
和ComboBox
)。这真的很糟糕,因为我的选项框绝对充满了这种类型的选项(即示例中的类型),因此它的垂直尺寸至少会增加一倍。某种自定义控件?
SplittableCheckBox
?某种带有
TableLayout
控制的魔法?(很确定这在“每个人似乎都错过的部分失败了。)放弃,要么回到 MS Sans Serif,要么统一使用 Tahoma,要么将 Segoe UI 与我的应用程序打包在一起,从而不尊重系统默认字体。
(新,通过编辑)切换到 WPF,如果有人可以说服我它完全支持这种情况。