Entwickler-Ecke

WinForms - [C#] FindComponent Methode?


masteroffinalfantasy - So 13.07.08 12:12
Titel: [C#] FindComponent Methode?
Moin Moin,

in Delphi gibt es ja die praktische FindComponent Methode... gibts sowas praktisches auch für C#?

Hab leider nichts auf Anhieb gefunden.

mfg


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am So 13.07.2008 um 12:18


Christian S. - So 13.07.08 12:19

In C# nicht, das ist nur die Sprache ;-)

Im Framework hat eine Form die Eigenschaft Controls, welche man so ansprechen kann:

C#-Quelltext
1:
Button meinButton = (Button) this.Controls["button1"];                    


Grüße
Christian


JüTho - So 13.07.08 13:36

Hallo,

Christians Antwort ist zwar korrekt, aber für die Praxis nicht ausreichend, da unter NET mit der Eigenschaft Controls immer nur eine Ebene erfasst wird. Entweder Du musst bei der Suche alle Controls rekursiv durchsuchen; oder Du benutzt die passende Methode in der richtigen Fassung (beachte den zweiten Parameter):

C#-Quelltext
1:
Control[] found = this.Controls.Find("button1"true);                    

Gruß Jürgen


masteroffinalfantasy - So 13.07.08 13:55

Danke euch beiden für die schnelle Hilfe :)

Problem gelöst :)


goldensurfer - Do 17.07.08 14:39

Habe gerade ein ähnliches Problem: ich will in einer Schleife durch alle Controls eines Formulars gehen und, falls das Formular ein Panel ist, weitere Aktionen damit anstellen:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
      Control ctl = null;
      for (int i = 0; i < this.Controls.Count; i++)
      {
        ctl = this.Controls[i];
        if (ctl is Panel)
        {
          MessageBox.Show(ctl.Tag.ToString());
        }
      }


Problem ist hier wie ganz oben beschrieben - ich bekomme nur die Controls, die direkt auf dem Formular liegen. Die Find-Methode kann ich nicht nehmen, da ich den Namen nicht kenne.
Weiß jemand eine Lösung, wie ich ohne Rekursion an alle Controls eines Formulars komme?

Danke!

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt


Kha - Do 17.07.08 14:58

user profile icongoldensurfer hat folgendes geschrieben:
falls das Formular ein Panel ist
Das könnte schwierig werden :mrgreen: .

Was spricht denn gegen Rekursion?


JüTho - Do 17.07.08 16:16

user profile iconKhabarakh hat folgendes geschrieben:
Was spricht denn gegen Rekursion?

Die Tatsache, dass ihm diese Hinweise [http://www.mycsharp.de/wbb2/thread.php?threadid=58242] nicht genügen. Jürgen


Kha - Do 17.07.08 17:40

Och, Cross-Posts sind doch ein gutes Beispiel [http://www.mycsharp.de/wbb2/thread.php?postid=262772#post262772] :zwinker: .