GroupBox自动调整大小

Sin*_*atr 5 c# groupbox autosize winforms

拿一个GroupBox,放在Label里面说然后设置AutoSizeMode = GrowAndShrinkAutoSize = true.

会出现两个问题:

  • Label底部和底部之间存在巨大差距GroupBox(几乎足以适应另一个Labellol);
  • AutoSize不尊重GroupBox.Text财产.

问题是如何GroupBox.AutoSize正常工作?正确的意思是:最小宽度应该足够适合GroupBox.Text,不明原因下面应该没有间隙(它不是Margin,也不Padding是看起来很丑).


我已经尝试测量字符串长度OnPaint并在MinimumSize那里设置.它有效,但我对此有疑问,好像我想MinimumSize稍后实际设置- 它会在重绘后丢失.


更新,这里是截图:

在此输入图像描述

小智 5

您可以通过从 GroupBox 派生一个新类来稍微调整底部边缘,从而消除底部不需要的黄色空间。在 VB 中,类似...

Public Class BetterGroupBox
    Inherits GroupBox

    Public Overrides Function GetPreferredSize(ByVal proposedSize As Size) As Size
        Dim ns = MyBase.GetPreferredSize(proposedSize)
        Return New Size(ns.Width, ns.Height - 15)
    End Function

End Class
Run Code Online (Sandbox Code Playgroud)


Kin*_*ing 1

很简单,您的位置Label固定在除 之外的某个点(0,0),请尝试以下操作:

label1.Location = Point.Empty;
Run Code Online (Sandbox Code Playgroud)

您可能还想尝试将Padding您的全部设置GroupBox0(默认值为 3):

groupBox1.Padding = new Padding(0);
Run Code Online (Sandbox Code Playgroud)