[c# VS2005] beim TableLayoutPanel Anordnen abschalten

Reticent

Erfahrenes Mitglied
Hallo Leute,


ist es möglich irgendwie das automatisches Anordnen beim TableLayoutPanel manuell zu steuern, (de)aktivieren?

Sinn dahinter ist, dass ich "Löcher" brauche wenn ich ein Control lösche. Und irgendwann tu ich den TableLayoutPanel "defragmentieren".
 
Warum fügst kein Transparentes Control ein? Oder eines, dass als Hintergundfarbe die des LayoutPanels hat...
Mit Löcher meinst sicher Platzhalter. Und was hat denn defragmentieren damit blos zu tun. :rolleyes:
 
jawohl, Löcher sind Platzhalter. :)

"defragmentieren" ist ein Begrif für meinen Projekt und hat nur intern einen Sinn. Deswegen steht er auch in "". Ich wollte blos andeuten, dass alle Platzhalter können irgendwann entfern werden. Dafür wollte ich dann manuel dem TableLayoutPanel den Befehl zum Anordnen geben.

Also, das geht anscheinend gar nicht. Schade... Obwohl, ich könnte alle Platzhalter mit nem Tag versehen und dann bei "defragmentieren" danach suchen und diese Controls removen. Oder gibts eine einfachere Variante?
 
Ich kann Dir nicht sagen, ob man das bei dem LayoutPanel temporär deaktivieren kann.
Habe zudem nur ein VS2003EA hier auf Arbeit zur Verfügung. Daher musst mal den Objektbrowser mal selber anstrengen. Wenn es ein deratiges Property geben sollte, ist es auch zu finden.

Ansonsten:
Erstell einfach ein Control, als Namen kannst den Namen des urprünglichen Controls hernehmen und fügst zB "_dummy" mit an. Wenn Du nun alle Platzhalter entfernen willst, iterierst duch alle Elemente des LayoutPanels und sammelst alle Elemente, deren Name mit "_dummy" endet, in einer List. Danach iterierst durch die List und enfernst alle Controls aus der ControlCollection des LayoutPanels.

C#:
List<Control> controlList = new List<Control>();

tableLayoutPanel.SuspendLayout();

foreach ( Control _control in tableLayoutPanel.Controls )
        if( _Control.Name.EndsWith( "_dummy" );
                controlList.Add( _Control );

foreach ( Control _control in controlList )
        tableLayoutPanel.Controls.Remove( _control );

tableLayoutPanel.ResumeLayout();

Noch Fragen?
 
danke,

das Property habe ich nicht gefunden.

"_dummy", genau, ich wollte statt dessen aber den Tag benutzen. Im Prinzip ist es egal, hauptsache man kann damit Elemente finden.

Dann werde ich so machen. Aber, falls jemand bessere Idee hat - nur zu.
 
Zurück