Autor Beitrag
ots_sharp
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: So 06.05.12 13:03 
Hallo,

in einer Maske habe ich verschiedene Objekte (Comboboxen, CheckBoxen) die ich gezielt ansprechen möchte. Diese Objekte möchte ich dann in mehreren Methoden verwenden. Dazu würde ich die Objekte in eine Methode schreiben und diese bei Bedarf aufrufen. Wie kann ich diese an eine Methode übergeben und wie kann ich diese Liste durchlaufen?
Ein Array funktioniert in diesem Fall nicht, da sich unterschiedliche Objekte befinden.
Bei VB können die Objekte als Object angesprochen werden. Gibt es das auch in C#?

ausblenden C#-Quelltext
1:
ComboBox[] BoxArray = new ComboBox[] { this.cbox1, this.cbox2};					


Auflistung der Objekte

ausblenden C#-Quelltext
1:
 this.cbox1, this.cbox2, this ckhbox1,…;					


Gruß Stefan
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 06.05.12 13:33 
Hallo,

alle GUI-Komponenten haben die Basisklasse Control, so daß du also davon ein Array erzeugen kannst:
ausblenden C#-Quelltext
1:
Control[] controls = new Control[] { this.cbox1, this.cbox2, this.ckhbox1 /*,...*/};					

Dies ist besser als Object zu verwenden, da du dann schon auf die allgemeingültigen Eigenschaften wie Name, Text, Size etc. zugreifen kannst, ohne explizit 'casten' zu müssen.
ots_sharp Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: So 06.05.12 13:55 
Vielen Dank für die Rückantwort. Und wie greife ich auch das SelectedItem einer ComboBox zu?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 06.05.12 14:56 
Du meinst innerhalb der Controls-Schleife?

Zuerst überprüfen, ob es sich um eine ComboBox handelt, und dann darauf zugreifen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
foreach(Control control in controls)
{
  ComboBox cb = control as ComboBox; // versuche nach ComboBox zu casten
  if (cb != null// wenn ja, dann cb != null, ansonsten null
  {
    object item = cb.SelectedItem;
    // ...
  }
}

Brauchst du denn wirklich alle verschiedenen Controls in dem Array, denn so müßtest du jeden Control-Type einzeln überprüfen?
ots_sharp Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: So 06.05.12 15:00 
Ja, ich möchte den Boxen den Index zuweisen und so die Boxen zur Laufzeit mit Werten einstellen.