WinForms垂直自动调整,同时保持宽度可调?

时间:2010-10-19 14:24:29

标签: winforms

是否可以使用WinForms布局引擎设置表单,以便自动调整高度以适应内容,但宽度可由用户调整?

作为一个例子,考虑以下有点人为的形式:

  • TLPTableLayoutPanel,包含1行和2列。
  • label1Label,包含在左栏中。将Text设为长,AutoSize为假,Dock为填充。
  • button1:按钮,包含在右栏中。将AutoSize设为true。
  • 现在将行设置为“AutoSize”,将第一列设置为“100%”,将第二列设置为“AutoSize”。
  • 最后,将整个TLP设为AutoSize为真,将AutoSizeMode设为GrowAndShrink。

此时,TLP可以合理地水平调整大小,但WinForms似乎不允许这样做。

这个想法是包含这个TLP的表单会根据宽度垂直增大或缩小,用户可以像往常一样通过调整窗口来改变它。

2 个答案:

答案 0 :(得分:6)

希望你现在有了解决方案。但是如果任何人有相同的查询,您可以将最大大小属性的宽度设置为窗体的实际宽度和MaximumSize的高度为0.

答案 1 :(得分:1)

这完全有可能。为此,您必须覆盖表单上的SetBoundsCore。然后,您可以控制高度,以便在调整大小时可能不会更改高度。只需将您想要的高度存储在变量中,然后将覆盖始终设置为该值。这样,当您自动调整高度大小时,您可以在设置表单Height之前保存新的高度,并且SetBoundsCore将尊重新的高度。