Problem mit vielen Steuerelementen

04/06/2008 - 21:00 von Reinhard Achleitner | Report spam
Hallo!

Ich habe ein Problem mit einer GUI. Ich benötige viele Steuerelemente die in
einem Panel angeordnet werden.

Um Speicherplatz zu sparen und aus Performancegründen, cache ich die
Steuerelemente die ins Panel kommen.

Das Panel selber bleibt auch erhalten, ich entferne nur die Elemente aus dem
panel mit panel.Controls.Remove und füge die Elemente (in anderer
Reihenfolge und Anzahl) wieder mit panel.Controls.Add() hinzu.
Diese Methode erzeugt scheinbar auch ein Handle, da nach gewisser Zeit eine
Exception auftritt das keine handles mehr erzeugt werden können.

Kann man da was dagegegen machen?

Gruß

Reini
 

Lesen sie die antworten

#1 Frank Dzaebel
05/06/2008 - 08:03 | Warnen spam
Hallo Reinhard,

Ich habe ein Problem mit einer GUI. Ich benötige viele Steuerelemente die
in einem Panel angeordnet werden.



Wie viele denn? Es ist nicht empfohlen in der GUI
mit zu vielen Controls zu arbeiten.
In solchen Fàllen ist oft die Technik des
Erstellens "on demand" sinnvoll. Etwa wie
beim VirtualMode beim DataGridView:

[Nutzung grosser Datenmengen beim DataGridView]
http://dzaebel.net/DgvVirtual.htm



Um Speicherplatz zu sparen und aus Performancegründen, cache ich die
Steuerelemente die ins Panel kommen.



Vielleicht übergehen in die Technik "Cache des *Inhalts*
anstatt der Steuerelemente".



Das Panel selber bleibt auch erhalten, ich entferne nur die Elemente aus
dem panel mit panel.Controls.Remove und füge die Elemente (in anderer
Reihenfolge und Anzahl) wieder mit panel.Controls.Add() hinzu.
Diese Methode erzeugt scheinbar auch ein Handle, da nach gewisser Zeit
eine Exception auftritt das keine handles mehr erzeugt werden können.



Ggf. die Dispose-Methode des Controls benutzen, aber
ganz oben genanntes Verfahren ist IMHO zu bevorzugen.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen