【问题标题】:Aligning label controls differently within panel in WinForms在 WinForms 的面板中以不同方式对齐标签控件
【发布时间】:2016-11-01 12:43:09
【问题描述】:

我有一个 WinForms 面板,其中包含两个项目,例如。标签。

我需要以不同的方式水平对齐它们,假设 Label1 需要对齐到面板的中心,而 Label2 需要对齐到面板的右侧。调整大小时必须保留对齐方式。

我应该使用什么面板?控制板?流布局面板?还要别的吗? 我应该如何设置面板/标签的属性以实现上述排列?

【问题讨论】:

  • 调整大小前最好分享一张图片,调整大小后分享一张图片,这样需求会更清晰。也许只是使用Anchor的一些属性设置,也许你需要一些事件处理代码。
  • 标签可以自行完成,无需面板帮助。使用它的 Anchor 属性。使用 Top + Right 使其保持与右侧对齐。居中需要更多工作:使用 AutoSize = False,TextAlign = TopCenter,将标签定位在中心,Anchor = Left + Top + Right。
  • @Hans Passant:它几乎可以满足我的需要。仅当调整大小意味着增加宽度时,您的指令“将标签定位在中心”就足够了。对于减小宽度的工作解决方案,需要将“将标签定位在中心”替换为“将标签的宽度拉伸到封闭面板的边缘(是的,通过 label2 拉伸右侧)”。在后一种情况下,还必须注意 z 顺序以避免隐藏 label2。

标签: winforms alignment panel


【解决方案1】:

TabelLayoutPanel 用于两列。将左侧标签锚点设置为顶部和底部,标签文本对齐中心。 标签 2 锚点右,文本右居中。

TabelLayoutPanel 设置为 Dock 以填充(如果它是表单上的唯一控件)或将锚点设置到您想要展开的两侧。

标签的进一步对齐可以通过它在父容器中的锚位置和文本对齐来控制。

【讨论】:

  • 编辑:谢谢,但据我所知,这会将 Label1 与 TableLayoutPanel 的第 1 列的中心对齐,而不是与整个 TableLayoutPanel 的整个宽度的中心对齐。
猜你喜欢
  • 2018-01-16
  • 2010-12-13
  • 2017-09-04
  • 2010-12-14
  • 1970-01-01
  • 2021-06-24
  • 2012-04-19
  • 1970-01-01
  • 2014-07-15
相关资源
最近更新 更多