2012-04-15 10 views
2

Ich habe eine UserControl mit einem FlowLayoutPanel. Viele dieser Steuerinstanzen müssen in einer verschachtelten Form unter Form verwendet werden. Ich habe herausgefunden, dass nur 15 verschachtelte Instanzen erstellt werden können! Also beschloss ich, ein einfacheres Modell meiner Kontrolle zu überprüfen. Das Modell besteht aus einem GroupBox, die enthält ein Panel:Wie viele verschachtelte Steuerelemente können erstellt werden?

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; 
} 

Wenn groupIndex zu 24 erreicht, es trifft die Fehler beim Erstellen der Fenster Ausnahme behandeln. Was ist der Grund dafür und wie man es überwinden kann?

Dank

+1

Sie \t sollten Auschecken [Die Grenzen von Windows verschieben: Handles] (http://blogs.technet.com/b/markrussinovich/archive/2009/09/29/3283844.aspx) –

+0

Sehen Sie, ob dies [Forum Post] (http://social.msdn.microsoft.com/forums/en-us/winforms/thread/84F3FFBE-DA0B-43C9-8565-2BDA39003655) und diese [Bing Suche] (http://www.bing.gov). com/search? q = Fehler + creating + window + handle + Ausnahme & qs = n & form = QBLH & pq = Fehler + creating + window + handle + Ausnahme & sc = 0-0 & sp = -1 & sk =) erhellen das Problem. –

+1

Haben Sie einen guten Grund, Dinge so tief zu verschachteln? – Ryan

Antwort

1

Dies ist ein Duplikat der folgenden Fragen:

Control Nesting Limits in WinForms

Um Ihre Frage zu beantworten, muss Windows die Grenze von 50 verschachtelten Kontrollen (source).

Ihr Beispiel erstellt ein Gruppenfeld und fügt ein Fenster darin ein, und zwar 24 Mal vor dem Absturz. Wenn Sie für das Formular selbst verantwortlich sind, treffen Sie dieses Limit.

Die Begrenzung wird erzwungen, wenn die Steuerelemente gezeichnet werden. Nach meinen Tests konnte ich viele Hunderte von Steuerelementen erstellen und verschachteln, aber als ich das Steuerelement der obersten Ebene eines sichtbaren Steuerelements hinzufügte, stürzte es immer noch ab.

Verwandte Themen