首页 / 知识

关于winforms:在CheckBox中间定位控件

2023-04-13 20:46:00

关于winforms:在CheckBox中间定位控件

Positioning controls in the middle of a CheckBox

这是我之前的问题"字体相关控制定位"的后续内容。这是尝试解决这个问题背后的真正问题,可能与我所询问的方式不同。

问题陈述示例:我想要一个复选框,上面写着"加载后按 调整价格",其中是一个数字---可以用NumericUpDown调整---和是"百分比"或"美元",由ComboBox选择。这将是一条线。

复杂性:我希望能够为所有这些控件更改我的字体(基本上将它们设置为System.Drawing.Fonts.MessageBoxFont,这是Windows XP上的Tahoma 8 pt和Vista上的Segoe UI 9 pt),而不会弄乱我的布局,使用我当前的Position -property - 设置范例不起作用。

更一般地说,我希望控件以与字体无关的方式动态布局,以便 NumericUpDown紧贴"by"和 ComboBox之间的空间,同样 ComboBox适用于 CheckBox和字符串"加载后"右侧。

每个人似乎都错过了这个部分:这些都嵌套在CheckBox中。因此,理想情况下,单击"加载后"字样应选中/取消选中该复选框,并在"加载后调整价格"周围绘制该高亮矩形。所以只是在末尾打一个额外的Label不起作用,因为它不会切换CheckBox;类似地,尝试通过连接这样的LabelClick事件来创建带状物不会产生所需的高亮矩形。

解决方案?在这一点上,我在想:

  • 重新思考问题,不知何故,可能有一个丑陋的解决方案,如两个单独的文本行:"加载后调整找到的价格"(CheckBox),"调整金额:"(NumericUpDownComboBox)。这真的很糟糕,因为我的选项框绝对是这种类型的选项(即示例中的类型),因此它的垂直大小至少会加倍。

  • 某种自定义控件? SplittableCheckBox

  • 某种具有TableLayout控制的魔法? (很确定这在"每个人似乎错过的部分都失败了。"

  • 放弃并返回MS Sans Serif,或统一使用Tahoma,或将Segoe UI与我的应用程序打包在一起,从而不尊重系统默认字体。

  • (新的,通过编辑)切换到WPF,如果有人可以说服我它完全支持这种情况。


  • 如果您有多个选项遵循此布局,为什么不创建用户控件? 用户控件将包含CheckBox,NumericUpDown,ComboBox和"加载后"标签。 您可以覆盖OnFontChanged,以根据使用给定字体呈现文本来调整控件的位置。 将EventHandler添加到Label以检查/取消选中CheckBox。

    至于将焦点矩形包围在所有控件周围,您应该能够在单击其中一个内部控件时为用户提供控件焦点。


    定位控件控制字体

    最新内容

    相关内容

    热门文章

    推荐文章

    标签云

    猜你喜欢