取一个GroupBox,把Label放在里面,然后设置AutoSizeMode = GrowAndShrink和AutoSize = true。
会出现两个问题:
Label与GroupBox底部之间存在着巨大的差距(几乎足以容纳另一个Label lol);AutoSize不尊重GroupBox.Text属性。问题是如何使正常工作?正确的意思是:最小宽度应该足够适合GroupBox.Text,下面不应该有未知原因的空白(它不是Margin,也不是Padding,它看起来很难看)。
我尝试在OnPaint中测量字符串长度,并在那里设置MinimumSize。它可以工作,但我对此有疑问,好像我希望以后真的设置MinimumSize --在重新绘制之后,它会丢失。
更新,这是截图:

发布于 2016-02-19 15:51:07
您可以通过从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发布于 2013-08-19 07:59:44
简单地说,您的Label的位置在(0,0)以外的某个点是固定的,请尝试如下:
label1.Location = Point.Empty;您还可以尝试将Padding的GroupBox设置为0 for all (默认值为3):
groupBox1.Padding = new Padding(0);发布于 2017-11-09 20:39:24
似乎GroupBox控件在生成控件if AutoSize = true时有一个预定义的填充。也就是说,一旦一个控件(在GroupBox中)在GroupBox底部大约20个像素以内,GroupBox就开始增长。这会导致大约20个像素从最底层的控件底部填充到GroupBox的底部(@Sinatr的附加图像以黄色突出显示)。
根据我的观察,在生长Width of GroupBox时,填充物似乎要少一些。
无论如何,您可以这样做:“绕开”问题:
public void MyFunction()
{
groupBox1.AutoSize = true;
// Do stuff (e.g., add controls to GroupBox)...
// Once all controls have been added to the GroupBox...
groupBox1.AutoSize = false;
// Add optional padding here if desired.
groupBox1.Height = myBottomMostControl.Bottom;
}https://stackoverflow.com/questions/18308883
复制相似问题