感谢您重温一遍。
设置:
- 我在 AutoSize=true 和 AutoSizeMode=GrowAndShrink 的表单上有一个 TableLayoutPanel。
- TableLayoutPanel 也是 AutoSize=true 和 AutoSizeMode=GrowAndShrink。
- 最后,在 TableLayoutPanel 中,我有一个 AutoSize=true 的标签。
现实:
当我将大量文本放入标签时,我希望它会自动变大。如果表单的高度超过 650 像素,我想在标签上降低字体大小,直到表单大小回到 650 像素以下。不幸的是,这不会发生。相反,表单保持高(800+ 像素)并在下方循环,直到字体大小最小 (6),而不会明显地调整表单、表格或标签的大小。
这是我正在使用的代码。要温柔 :)
While Me.Height > 650 And (FontSize = -1 Or FontSize > 5)
If FontSize < 3 Then 'hack
FontSize = 12
Else
FontSize -= 1
End If
'I hoped this would just resize everything (label, TableLayoutPanel, Form)
lblText.Font = New System.Drawing.Font("Microsoft Sans Serif", FontSize)
'Then tried to force it to resize
TableLayoutPanel1.PerformLayout()
Me.Refresh() 'Maybe unnecessary
Me.PerformAutoScale() 'Necessary?
Me.Size = New Size(558, 200) 'Feeble attempt to force a resize
End While