【问题标题】:Center buttons in a container容器中的中心按钮
【发布时间】:2011-12-31 17:02:51
【问题描述】:

如何指定按钮在容器中居中而无需指定位置?有没有可能?

目标是能够使面板中的多个按钮居中,而无需对其位置进行计算。

【问题讨论】:

  • 如果 2 个按钮说要居中怎么办?
  • 它们之间的边距很小。就像 float 在 Css 中的行为一样
  • 自行将控件居中,然后移除左侧和顶部锚点(默认打开),这样就没有锚点了。
  • 如果在设计时,Otiel 的回答是正确的。但在运行时?我认为您必须自己计算,特别是因为可能涉及多个控件。

标签: c# winforms


【解决方案1】:

我不能 100% 确定您在问什么,但请尝试使用 TableLayoutPanel,然后在表格的每个单元格中放置一个按钮。如果您将TableLayoutPanel 锚定到顶部、左侧、底部和右侧,表格将随表单增大和缩小,但每个按钮将相对于其所在单元格的左上角“浮动”。

禁用所有锚定将使TableLayoutPanel 保持在表单中的相对位置,但您的按钮将保持彼此之间均匀间隔。

在标准控制锚定和/或TableLayoutPanel 之间,您应该能够找到所需的正确锚定类型。

【讨论】:

    【解决方案2】:

    我知道可以将一些控件集中在 form 上,但不确定是否是面板。无论如何:

    • 如果您希望控件保持水平居中,请禁用控件的 LeftRight 锚点,如果希望控件保持垂直居中,请禁用 TopBottom 锚点,
    • 在设计器窗口中,选择您的控件,
    • 在 VS 的“Format”菜单中,点击“Center in form”,然后点击“Horizo​​ntally”和/或“”垂直'。

    如果要将多个控件并排居中,请将它们全部选中并执行上述步骤。

    当用户调整窗口大小时,控件将保持居中。

    【讨论】:

    • 你说得对,但我认为你的意思是“左和上”锚。
    • @Otiel 这不符合我的需要。最后,如果您检查 InitializeComponent() 它仍然指定一个计算的位置,那么没有给它任何锚。
    • @Otiel 很高兴知道位置何时应该保持固定并且在编译时已知。但是,在我的情况下不起作用。
    • @LarsTech:我实际上是指LeftRight,因为我在写答案时考虑的是中心水平。但你是对的,TopBottom 也应该禁用以垂直居中。答案已更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2014-01-25
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    相关资源
    最近更新 更多