【发布时间】:2019-05-30 03:55:52
【问题描述】:
我一直遇到控制面板被“切断”的问题。但是,当我手动开始调整表单大小时,丢失的控件会在每次调整大小后重新出现。 我创建了一个测试应用程序来显示这个问题。 该应用程序本身在主窗体上添加了一个面板。 在这个面板中,我添加了 10 个分组框,每个分组框有 100 个标签。 以下是创建测试应用程序并重现问题的步骤(到目前为止,我只在 .NET 4.6.1 和 Visual Studio 2017 上尝试过)
- 创建一个新的 windows 窗体项目
-
更新默认表单的构造函数如下
public Form1() { InitializeComponent(); // My stuff var panContents = new Panel(); panContents.AutoScroll = true; panContents.AutoSize = true; panContents.AutoSizeMode = AutoSizeMode.GrowAndShrink; panContents.Dock = DockStyle.Fill; for (int g = 10; g >= 0; g--) { var groupBox = new GroupBox(); groupBox.AutoSize = true; groupBox.AutoSizeMode = AutoSizeMode.GrowOnly; groupBox.Dock = DockStyle.Top; groupBox.Text = "Group " + g; var mainPanel = new Panel(); mainPanel.Dock = DockStyle.Fill; mainPanel.AutoSize = true; mainPanel.AutoSizeMode = AutoSizeMode.GrowOnly; for (int i = 100; i >= 0; i--) { var con = new Label(); con.Text = "Label " + i; con.Height = 100; con.Dock = DockStyle.Top; mainPanel.Controls.Add(con); } groupBox.Controls.Add(mainPanel); panContents.Controls.Add(groupBox); } this.Controls.Add(panContents); } 运行项目(不调整表单大小)
- 滚动到表单底部附近,您会注意到并非所有 10 个组框都已呈现
- 手动调整表单大小,您会注意到一些缺少的标签和组框开始出现
- 不断调整表单大小,直到显示所有控件
有人知道为什么会这样吗?我想这可能与面板大小的限制有关。但是,如果是这种情况,我不希望调整表单大小以开始显示这些缺少的控件。
PS 我知道我可以通过使用标签或分页来解决这个问题。但是我想知道为什么我会看到我所看到的行为(理想情况下我想避免使用标签或分页)
【问题讨论】:
-
您可能导致表单/面板滚动超过最大滚动值 (IIRC
32,767)。 -
这正是我的想法....但这并不能解释为什么调整表单大小会导致越来越多的控件出现。如果我达到了面板限制,那么调整表单的大小应该不会对显示的控件数量产生任何影响......如果这有意义的话
标签: .net winforms label panel groupbox