【问题标题】:c# winforms evenly distribute 3 controlsc# winforms均匀分布3个控件
【发布时间】:2009-06-22 09:49:28
【问题描述】:

我有 3 个自定义控件,我想将它们放置在一个可调整大小的窗口中,彼此相邻。当窗口被调整大小时,这些控件也应该调整大小,每个都占据可用宽度的 33%。

我尝试使用表格布局,但表格似乎只会增长,但不会缩小。

感谢您对此的任何帮助!

【问题讨论】:

  • 请描述“永不缩小”的含义。不应该是这样的。
  • 我的意思是,当我把窗口变大时,表格布局也会随之增长。但是当我缩小窗口时,表格布局保持原样。
  • @matt:这不是正常行为。在干净的表格上试一试。 Ksempac 的回答是正确的。
  • 是的,当我把它放在一个干净的表格上时它可以工作。但我就是找不到干净的形式和我的区别......
  • @matt:找到这些差异是另一回事。您可能应该检查 *.Designer.cs 源代码。

标签: c# winforms


【解决方案1】:

您可以使用 TableLayoutPanel,每列大小为“33%”的 3 列。然后将每个控件放入面板中,并根据需要设置锚属性(例如,如果您的控件应仅在水平面上调整自身大小,则为右-左)。

您的 TableLayoutPanel 还应该将其属性 Dock 设置为 True,以便他可以占据您的所有窗口并相应地调整大小。

【讨论】:

  • 谢谢,但这正是我已经做过的,但正如我所说,表格布局只会增长,但不会缩小
  • 您需要检查几件事:您是否设置了控件的 Dock 属性?如果没有,它的 Anchor 属性的值是多少?布局是否在各个方向调整大小?你确定布局没有调整大小吗?如果布局尝试调整大小,但您的控件没有(因为它们没有设置锚点或停靠属性),您将看不到它。
  • 对不起,第一个问题我的意思是“您是否设置了 TableLayoutPanel 的 Dock 属性?”。
  • 表格布局的锚点设置为上、左、右、下。即它在各个方向调整大小。我不想设置停靠属性,因为它会与其他控件重叠。所以是的,表格布局会在各个方向调整大小,但不再缩小。在 tablelayout 的表格中,我已将控件的停靠栏设置为填充。
  • 您是否检查过您的布局的列设置为百分比大小而不是固定大小?对不起,如果这个问题看起来很愚蠢,但我会尝试解决所有可能的问题。我知道 tablelayoutpanel 有效,因为我目前正在使用这种布局创建 Outlook 2007 表单。
猜你喜欢
  • 2011-08-21
  • 2013-11-11
  • 1970-01-01
  • 2011-04-04
  • 2021-12-28
  • 1970-01-01
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多