Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#刚添加到容器时标签尺寸错误_C#_Controls_Flowlayoutpanel - Fatal编程技术网

C#刚添加到容器时标签尺寸错误

C#刚添加到容器时标签尺寸错误,c#,controls,flowlayoutpanel,C#,Controls,Flowlayoutpanel,我已经通过使用textider.MeasureText找到了解决此问题的方法,但我仍然很困惑为什么会发生这种情况。我这里有一段代码: var label = new Label() { Name = col.ColumnName, Text = col.ColumnText + ":", AutoSize = true, Margin = new Padding(1, 1, 1, 0), Font = label8.Font }; label.MaximumSize = new Size(148

我已经通过使用
textider.MeasureText
找到了解决此问题的方法,但我仍然很困惑为什么会发生这种情况。我这里有一段代码:

var label = new Label() { Name = col.ColumnName, Text = col.ColumnText + ":", AutoSize = true, Margin = new Padding(1, 1, 1, 0), Font = label8.Font };
label.MaximumSize = new Size(148, 0);

Control input = null;
// Do stuff to input but not label

flowLayoutPanel2.Controls.Add(label);
flowLayoutPanel2.Controls.Add(input);
flowLayoutPanel2.Height += label.Height + input.Height + 5;
在将标签添加到flowLayoutPanel之前,标签的首选高度和宽度分别为16和78(这很好),但添加标签之后,实际高度和宽度现在为176和16。我真的不明白176的高度是从哪里来的,但每次都是相同的数字(176)。高度应为16,但宽度显然采用该值

在添加到面板的所有5个标签和5个其他控件中,只有添加的第二个标签(总共是第三个控件)会遇到这种情况。添加标签后,程序再次到达显示的代码段,标签的大小突然正确


如果有人能告诉我发生了什么,我将不胜感激。

我相信这是因为当标签的父项发生更改时,当AutoSize设置为true时,它将自行调整大小(取自:


在Visual Studio Designer中也会发生同样的情况,如果将标签放置在FlowLayoutPanel中,则会看到其大小将自动更新。

我相信这是因为当标签的父项发生更改时,当AutoSize设置为true时,它会自动调整大小(取自):


在Visual Studio Designer中也会发生同样的情况,如果将标签放置在FlowLayoutPanel中,则会看到其大小将自动更新。

代码很好,问题一定来自代码的其他部分。没有其他部分会对标签产生任何影响,只有第二个标签会出现这种情况。这是在foreach循环中运行的,每次都执行相同的操作。我不知道应该是什么其他部分。您显示的代码没有重现此问题。当然,你不会显示循环或数据提示。我想那只是我的电脑吧?显示所有的循环只会增加噪音,因为它相当大。您需要完整的代码来理解它,而且它没有那么紧迫。我只是想知道它可能是什么:D代码很好,问题一定来自代码的其他部分。没有其他部分对标签有任何影响,只有第二个标签经历了这种情况。这是在foreach循环中运行的,每次都执行相同的操作。我不知道应该是什么其他部分。您显示的代码没有重现此问题。当然,你不会显示循环或数据提示。我想那只是我的电脑吧?显示所有的循环只会增加噪音,因为它相当大。您需要完整的代码来理解它,而且它没有那么紧迫。我只是想知道它可能是什么:D
protected override void OnParentChanged(EventArgs e) {
    base.OnParentChanged(e);
    if (SelfSizing) {
        // VSWhidbey 368232: in the case of SelfSizing
        // we dont know what size to be until we're parented
        AdjustSize();
    }
    Animate();
}