2012-04-15 54 views
2

我有UserControl包含FlowLayoutPanel。需要在Form上以嵌套形式使用很多這種控件實例。我發現它只有只有可以創建15個嵌套實例!所以我決定檢查一個更簡單的控制模型。該模型由一個包含Panel一個GroupBox的:可以創建多少個嵌套控件?

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

你\t應該檢查[推動Windows的限制:處理](http://blogs.technet.com/b/markrussinovich/archive/2009/09/29/3283844.aspx) – 2012-04-15 02:34:43

+0

看看這個[論壇(http://social.msdn.microsoft.com/forums/en-us/winforms/thread/84F3FFBE-DA0B-43C9-8565-2BDA39003655)和[Bing搜索](http://www.bing。 com/search?q =錯誤+創建+窗口+句柄+異常&qs = n&form = QBLH&pq =錯誤+創建+窗口+句柄+異常&sc = 0-0&sp = -1&sk =)揭示了這個問題。 – 2012-04-15 02:36:48

+1

你是否有很好的理由來嵌套這些東西呢? – Ryan 2012-04-15 02:38:25

回答

1

這以下問題的重複:

Control Nesting Limits in WinForms

要回答你的問題,Windows有50個嵌套控件(source)的限制。

您的示例創建了一個組框,並在其中嵌套了一個面板,並且在發生崩潰之前這樣做了24次。如果你自己填寫表格,那你就達到了這個限制。

繪製控件時強制執行此限制。從我的測試中,我能夠創建並嵌套數百個控件,但是當我將該嵌套的頂層控件添加到可見控件時,它仍然崩潰。

相關問題