1

感谢您重温一遍。

设置:

  1. 我在 AutoSize=true 和 AutoSizeMode=GrowAndShrink 的表单上有一个 TableLayoutPanel。
  2. TableLayoutPanel 也是 AutoSize=true 和 AutoSizeMode=GrowAndShrink。
  3. 最后,在 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
4

0 回答 0