Entwickler-Ecke
WinForms - Button auf panel druch namen löschen
bd.cole - Fr 07.09.07 08:08
Titel: Button auf panel druch namen löschen
Hallo ich habe einen panel auf dem mehrere Buttons dynamisch erstellt werden und name bekommen (Button_1 - Button_x). Jetzt möcht ich während der Laufzeit einen button löschen. Ich haben den Namen von dem Button, aber nicht mehr. Wie kann ich den löschen? Kenne halt nur panel1.Controls.remove()
Gibt es irgend ein befehl. Remove Button where name is blalba oder so? Oder wie macht man das?
Oder irgendwie: Button temp = (Button)...
Mir fällt nix ein
JüTho - Fr 07.09.07 09:10
Hallo,
ich dachte auch, es gäbe eine Methode, die nach dem Namen sucht. Da scheint mich meine Erinnerung zu täuschen; jedenfalls finde ich in der Doku nichts. Das lässt sich aber leicht nachbauen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| private Control FindControlByName(Control parentControl, string name) { Control Result = null; foreach(Control ctrl in parentControl.Controls) { if (ctrl.Name == name) { Result = ctrl; break; } } return Result; } |
Erklärungen dafür erübrigen sich ja wohl.
Mit dem gefundenen Control kannst Du dann machen, was Du willst: Remove oder neu färben oder... Aber aufpassen: Wenn nichts gefunden wird, bleibt das Result null. Und auf die rekursive Suche in untergeordneten Controls verzichte ich hier.
Jürgen
bd.cole - Fr 07.09.07 09:31
Thx hat funktioniert
Mfg Cole
JüTho - Fr 07.09.07 14:06
JüTho hat folgendes geschrieben: |
| ich dachte auch, es gäbe eine Methode, die nach dem Namen sucht. Da scheint mich meine Erinnerung zu täuschen; jedenfalls finde ich in der Doku nichts. |
Auch wenn sich Dein Problem gelöst hat: ich habe jetzt doch eine direkte Methode (ab NET 2.0) gefunden.
| Zitat: |
Control.ControlCollection.Find-Methode
Sucht nach Steuerelementen anhand ihrer Name-Eigenschaft und erstellt ein Array aller übereinstimmenden Steuerelemente. |
Beispiel:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| private Control FindControlByName(Control parentControl, string name) { Control Result = null; Control[] = parentControl.Controls.Find(name, true); if (coll != null && coll.Length > 0) Result = ctrl; } return Result; } |
Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!