是否可以使用WinForms布局引擎设置表单,以便自动调整高度以适应内容,但宽度可由用户调整?
作为一个例子,考虑以下有点人为的形式:
TLP
:TableLayoutPanel
,包含1行和2列。label1
:Label
,包含在左栏中。将Text
设为长,AutoSize
为假,Dock
为填充。button1
:按钮,包含在右栏中。将AutoSize
设为true。TLP
设为AutoSize
为真,将AutoSizeMode
设为GrowAndShrink。此时,TLP
可以合理地水平调整大小,但WinForms似乎不允许这样做。
这个想法是包含这个TLP的表单会根据宽度垂直增大或缩小,用户可以像往常一样通过调整窗口来改变它。
答案 0 :(得分:6)
希望你现在有了解决方案。但是如果任何人有相同的查询,您可以将最大大小属性的宽度设置为窗体的实际宽度和MaximumSize的高度为0.
答案 1 :(得分:1)
这完全有可能。为此,您必须覆盖表单上的SetBoundsCore
。然后,您可以控制高度,以便在调整大小时可能不会更改高度。只需将您想要的高度存储在变量中,然后将覆盖始终设置为该值。这样,当您自动调整高度大小时,您可以在设置表单Height
之前保存新的高度,并且SetBoundsCore
将尊重新的高度。