2010-10-19 190 views
8

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

作为一个例子,考虑以下有些做作形式:

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

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

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

回答

6

希望你现在已经得到了解决方案。但是,如果有人有相同的查询,您可以将最大尺寸属性的宽度设置为表格的实际宽度和最大尺寸的高度为0.

1

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