2

我有一个UserControl包含一个FlowLayoutPanel. 许多此类控件实例需要以嵌套形式在Form. 我发现只能创建 15 个嵌套实例!所以我决定检查一个更简单的控制模型。该模型由GroupBox包含 a的 a 组成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 时,遇到Error created window handle异常。是什么原因以及如何克服它?

谢谢

4

1 回答 1

1

这是以下问题的副本:

在 WinForms 中控制嵌套限制

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

您的示例创建了一个组框并在其中嵌套了一个面板,并且您在崩溃发生之前这样做了 24 次。如果您考虑表单本身,那么您将达到该限制。

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

于 2014-02-05T22:36:40.413 回答