可以创建多少嵌套控件?

时间:2012-04-15 02:29:45

标签: c# winforms

我的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时,会遇到错误创建窗口句柄异常。是什么原因以及如何克服它?

由于

1 个答案:

答案 0 :(得分:1)

这是以下问题的副本:

Control Nesting Limits in WinForms

要回答您的问题,Windows限制为50个嵌套控件(source)。

您的示例会创建一个组合框并在其中嵌套一个面板,并且在崩溃发生之前执行此操作24次。如果您自己考虑表单,那么您就达到了这个限制。

绘制控件时强制执行此限制。从我的测试中,我能够创建并嵌套数百个控件,但是当我将该嵌套的顶级控件添加到可见控件时,它仍然会崩溃。