Autor Beitrag
MikeRoxx
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 13.09.08 18:07 
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.
ausblenden 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
Hält's aus hier
Beiträge: 13

WinNT WinXP Vista
C#, Delphi,Javascript (VS2005/8, Delphi6/2005)
BeitragVerfasst: Sa 13.09.08 18:34 
Wie wärs damit?

ausblenden 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
MikeRoxx
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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!
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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:
ausblenden C#-Quelltext
1:
2:
foreach (PictureBox box in tableLayoutPanel1.Controls)
  box.AllowDrop = true;

_________________
>λ=
Peter Enz
Hält's aus hier
Beiträge: 13

WinNT WinXP Vista
C#, Delphi,Javascript (VS2005/8, Delphi6/2005)
BeitragVerfasst: 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

ausblenden 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
MikeRoxx
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.