Entwickler-Ecke
WinForms - Controls in Schleife ansprechen
Delete - Sa 13.09.08 18:07
Titel: Controls in Schleife ansprechen
Hallo zusammen,
da ich neu hier bin und erst seit 3 Tagen mit c# zu tun habe, werden wohl noch ein paar Fragen kommen...
Ich versuche allen pictureBoxen die auf einen TableLayoutPanel liegen den Wert pictureBox1.AllowDrop = true zu verpassen. Das sieht zur
Zeit so aus. Dort bekomme ich schon einmal alles picBoxen aufgezählt die ich habe. Bloß wie kann ich nun in der Schleife jeder Box den Wert
AllowDrop = true verpassen. Es sind so an die 40 Boxen.
C#-Quelltext
1: 2: 3: 4:
| for (int i = 0; i <= tableLayoutPanel1.Controls.Count - 1; i++) { MessageBox.Show(tableLayoutPanel1.Controls[i].Name); } |
ich bin für jeden Tipp dankbar! Falls ich im Falschen Forum gelandet bin dann bitte verschieben.
Greets
Mike
Peter Enz - Sa 13.09.08 18:34
Titel: Re: Controls in Schleife ansprechen
Wie wärs damit?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| for (int i = 0; i <= tableLayoutPanel1.Controls.Count - 1; i++) { PictureBox pictureBox = tableLayoutPanel1.Controls[i] as PictureBox; if (pictureBox != null) { pictureBox.AllowDrop=true; } MessageBox.Show(tableLayoutPanel1.Controls[i].Name); } |
Gruß
Peter
Delete - Sa 13.09.08 18:59
Danke!
So einfach kann das sein. Da ich wohl leider schon zu lange davor sitze habe ich jetzt auch eine "andere möglichkeit" gefunden. Beide getestet und beide funktionieren!
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| Control ctl = null; for (int i = 0; i <= tableLayoutPanel1.Controls.Count - 1; i++) { MessageBox.Show(tableLayoutPanel1.Controls[i].Name); ctl = tableLayoutPanel1.Controls[i]; if (ctl is PictureBox ) { ctl.AllowDrop = true; } } |
Welche jetzt besser ist... keine Ahnung. Beide führen zum Ziel und Danke für den Tipp!
Greets
Mike
Kha - Sa 13.09.08 19:07
Noch ein Tipp: for-Schleifen sind in C# so hässlich, dass ich sie möglichst vermeiden würde ;) . Wenn es in dem Panel keine anderen Controls gibt:
C#-Quelltext
1: 2:
| foreach (PictureBox box in tableLayoutPanel1.Controls) box.AllowDrop = true; |
Peter Enz - Sa 13.09.08 22:57
Sebastian,
stimmt for-Schleifen sind in C# hässlich, aber auch mit einer foreach-Schleife würde ich sicher gehen und
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| foreach (Control control in tableLayoutPanel1.Controls) { PictureBox pictureBox = control as PictureBox; if (pictureBox != null) { pictureBox.AllowDrop=true; } } |
codieren. Das funktioniert nämlich auch dann noch ohne InvalidCastException, wenn der Kollege nachträglich noch ein Label auf dem Panel plaziert.
Gruß
Peter
Delete - So 14.09.08 10:42
Hallo zusammen,
jetzt kann ich nur sagen, VIELEN DANK FÜR EURE ANTWORTEN!
Greets
Mike
p.s. Ich hoffe das ich auch einmal in der Lage sein werde euch helfen zu können.
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!