【问题标题】:How can I neatly line up right-aligned check boxes with with other controls?如何将右对齐的复选框与其他控件整齐排列?
【发布时间】:2015-06-15 07:03:28
【问题描述】:

Visual Studio WinForms 设计器让您可以相当好地将文本框、列表框、按钮等组合在一起。但是,带有 CheckAlign=MiddleRight 的复选框与其他复选框的工作方式不同,因为它有两个组件:内置标签和复选框本身。如果您将文本与其他标签对齐,该复选框将处于浮动状态并且不会自动对齐。您可以关闭 AutoSize 并尝试调整 CheckBox 控件的大小以使复选框对齐,但这很棘手,并且会被自定义字体大小丢弃。

在本例中,我几乎将复选框与其他控件对齐,但并不完全一致:

如果我有多个复选框,那将是一个真正令人头疼的问题,因为 AutoSize 关闭后,复选框的位置是相对于文本末尾的,因此每个控件必须逐个像素地单独调整大小。

将复选框与其他控件对齐的最佳方式是什么?

一种解决方法是在 CheckBox 中不包含文本,而是使用单独的 Label 控件。但是,这样做您将无法单击标签来切换复选框。在高分辨率屏幕上,点击 10x10 像素是很挑剔的,糟糕的 UX 体验。当然,您可以在标签中添加OnClick 事件,但这似乎解决了错误的问题。

这是其他人遇到相同问题的示例:在 Oracle SQL Developer 的首选项面板中,当存在混合属性时,复选框将使用单独的标签和框进行处理:

【问题讨论】:

  • 我试图在我所有已安装的软件中找到一种情况,其中该框位于文本的右侧,但找不到。我建议像其他人那样做。
  • 不太可能存在LayoutEngine 提供该级别的粒度来独立设置投票箱坐标和文本的规则。大多数LayoutEnginesControl 级别上运行,并且不提供特定类型控件的选项。您总是可以自己编写,但这比简单地使用 Label/CheckBox 对要多得多。

标签: winforms visual-studio checkbox


【解决方案1】:

就我个人而言,我通过不让复选框向右对齐来避免这个问题:

而不是将标题放在左侧。

【讨论】:

  • 这当然很容易,但恕我直言,它看起来很糟糕。列表末尾只有一个复选框还不错,但是中间有几个复选框的较长列表看起来很奇怪。
  • 人类可以应付。另一方面,能够单击复选框的文本并将其选中,但无法通过单击其标签来选择任何其他字段,即使标签和复选框文本在视觉上很接近,这似乎很奇怪, 好像属于同一类型。
  • 我已经设计 Windows 应用程序十年了,我个人总是像 Ian 建议的那样设计 UI,我的(非常挑剔的)用户、项目经理或 QA 从未抱怨过这个特定问题。微软也严格遵循这种模式,那么为什么要重新发明轮子呢?为什么要努力排列本来不应该排列的东西呢?话虽如此,我完全支持伊恩的回答作为答案
猜你喜欢
  • 2019-10-23
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 2016-12-07
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多