我的UserControl
包含FlowLayoutPanel
。需要在Form
上以嵌套形式使用大量此控件实例。我发现只有 15个嵌套实例可以创建!所以我决定检查一个更简单的控制模型。该模型由GroupBox
组成,其中包含Panel
:
Control parent = this;
for (int groupIndex = 0; groupIndex < 100; groupIndex++)
{
GroupBox grp = new GroupBox();
Panel pnl = new Panel();
pnl.Dock = DockStyle.Fill;
pnl.Parent = grp;
grp.Parent = parent;
grp.Size = new Size(parent.Width - 10, parent.Height - 10);
parent = pnl;
}
当groupIndex
达到24时,会遇到错误创建窗口句柄异常。是什么原因以及如何克服它?
由于
答案 0 :(得分:1)
这是以下问题的副本:
Control Nesting Limits in WinForms
要回答您的问题,Windows限制为50个嵌套控件(source)。
您的示例会创建一个组合框并在其中嵌套一个面板,并且在崩溃发生之前执行此操作24次。如果您自己考虑表单,那么您就达到了这个限制。
绘制控件时强制执行此限制。从我的测试中,我能够创建并嵌套数百个控件,但是当我将该嵌套的顶级控件添加到可见控件时,它仍然会崩溃。