Winforms 如何将右对齐的复选框与其他控件对齐?

Winforms 如何将右对齐的复选框与其他控件对齐?,winforms,visual-studio,checkbox,Winforms,Visual Studio,Checkbox,VisualStudioWinForms designer使您能够很好地将文本框、列表框、按钮等捕捉在一起。但是,CheckAlign=MiddleRight复选框的工作方式与其他复选框不同,因为它有两个组件:内置标签和复选框本身。如果将文本与其他标签对齐,则复选框将保持浮动状态,并且不会自动对齐。您可以关闭“自动调整大小”并尝试调整复选框的大小,使复选框对齐,但这很敏感,会被自定义字体大小所忽略 在本例中,我几乎将复选框与其他控件对齐,但不完全相同: 如果我有几个复选框,这将是一个真正令人头

VisualStudioWinForms designer使您能够很好地将文本框、列表框、按钮等捕捉在一起。但是,CheckAlign=MiddleRight复选框的工作方式与其他复选框不同,因为它有两个组件:内置标签和复选框本身。如果将文本与其他标签对齐,则复选框将保持浮动状态,并且不会自动对齐。您可以关闭“自动调整大小”并尝试调整
复选框的大小,使复选框对齐,但这很敏感,会被自定义字体大小所忽略

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

如果我有几个复选框,这将是一个真正令人头痛的问题,因为禁用“自动调整大小”时,复选框的位置相对于文本的结尾,因此每个控件都必须逐个像素地调整大小

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

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

下面是另一个有相同问题的人的示例:在Oracle SQL Developer的“首选项”面板中,当存在混合属性时,复选框将使用单独的标签和框进行处理:


就我个人而言,我避免了这个问题,因为我没有将复选框对齐到右侧:

而不是把标题放在左边


这当然很容易,但我觉得很糟糕。在列表的末尾只有一个复选框是不错的,但是中间有几个复选框的长列表看起来很奇怪。另一方面,能够单击复选框的文本并将其选中似乎很奇怪,但不能通过单击其标签来选择任何其他字段,即使标签和复选框文本在视觉上很接近,我已经设计了十年的Windows应用程序,我个人总是像Ian建议的那样设计UI,我(非常挑剔)的用户、项目经理或QA从来没有抱怨过这件事。微软也严格遵循这一模式,那么为什么要重新发明轮子呢?为什么要把本来不该排成一行的事情排成一行呢?话虽如此,我完全支持伊恩的答案。我试图在我所有安装的软件中找到一个盒子放在文本右侧,但找不到的例子。我建议像其他人一样去做。不太可能存在一个
layoungine
来提供独立设置投票箱和文本坐标规则的粒度级别。大多数
布局引擎
控件
级别运行,不提供特定控件类型的选项。您可以自己编写,但这比简单地使用
标签
/
复选框
对要复杂得多。