首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GroupBox自动大小

GroupBox自动大小
EN

Stack Overflow用户
提问于 2013-08-19 07:54:46
回答 3查看 10.4K关注 0票数 7

取一个GroupBox,把Label放在里面,然后设置AutoSizeMode = GrowAndShrinkAutoSize = true

会出现两个问题:

  • LabelGroupBox底部之间存在着巨大的差距(几乎足以容纳另一个Label lol);
  • AutoSize不尊重GroupBox.Text属性。

问题是如何使正常工作?正确的意思是:最小宽度应该足够适合GroupBox.Text,下面不应该有未知原因的空白(它不是Margin,也不是Padding,它看起来很难看)。

我尝试在OnPaint中测量字符串长度,并在那里设置MinimumSize。它可以工作,但我对此有疑问,好像我希望以后真的设置MinimumSize --在重新绘制之后,它会丢失。

更新,这是截图:

EN

回答 3

Stack Overflow用户

发布于 2016-02-19 15:51:07

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

代码语言:javascript
复制
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
票数 5
EN

Stack Overflow用户

发布于 2013-08-19 07:59:44

简单地说,您的Label的位置在(0,0)以外的某个点是固定的,请尝试如下:

代码语言:javascript
复制
label1.Location = Point.Empty;

您还可以尝试将PaddingGroupBox设置为0 for all (默认值为3):

代码语言:javascript
复制
groupBox1.Padding = new Padding(0);
票数 1
EN

Stack Overflow用户

发布于 2017-11-09 20:39:24

似乎GroupBox控件在生成控件if AutoSize = true时有一个预定义的填充。也就是说,一旦一个控件(在GroupBox中)在GroupBox底部大约20个像素以内,GroupBox就开始增长。这会导致大约20个像素从最底层的控件底部填充到GroupBox的底部(@Sinatr的附加图像以黄色突出显示)。

根据我的观察,在生长Width of GroupBox时,填充物似乎要少一些。

无论如何,您可以这样做:“绕开”问题:

代码语言:javascript
复制
    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;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18308883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档