tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von CPoly
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
1066
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Don Philippo
    Don Philippo Don Philippo ist offline Mitglied Bronze
    Registriert seit
    Nov 2005
    Beiträge
    43
    Hallo Leute,

    hab folgendes Problem. Habe mehrer pictureBoxes in einem Panel.

    pictureBox1, pictureBox2, pictureBox3, ...

    Kann man diese Control-Namen (Bezeichner) auch dynamisch zusammenbauen, um darauf zuzugreifen.
    Wie ordne ich z.B. bei 100 Bildboxen das gleiche Bild zu, ohne im Code 100-Mal

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    pictureBox[COLOR="Orange"]1[/COLOR].Image = [COLOR="MediumTurquoise"]Image[/COLOR].FromFile(sFilePath);
    pictureBox[COLOR="Orange"]2[/COLOR].Image = [COLOR="MediumTurquoise"]Image[/COLOR].FromFile(sFilePath);
    pictureBox[COLOR="Orange"]3[/COLOR].Image = [COLOR="MediumTurquoise"]Image[/COLOR].FromFile(sFilePath);
    ...
    ...
    pictureBox[COLOR="Orange"]<n-1>[/COLOR].Image = [COLOR="MediumTurquoise"]Image[/COLOR].FromFile(sFilePath);
    pictureBox[COLOR="Orange"]<n>[/COLOR].Image = [COLOR="MediumTurquoise"]Image[/COLOR].FromFile(sFilePath);


    die selbe Zuordnung schreiben zu müssen?!
    Geht doch bestimmt eleganter mit ner For-Schleife oder so!?
    Ich komm nicht drauf!

    Freu mich über Eure Hilfe
     
    Gruß,
    Philipp


    http://www.my-ppl.de

  2. #2
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Ich weis nicht ob es auch eleganter geht:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    foreach (Control c in panel1.Controls)
    {
    try
    {
    ((PictureBox)c).Image = Image.FromFile("c:\\a.jpg");
    }
    catch (Exception ex)
    { }
    }
    Don Philippo bedankt sich. 

  3. #3
    Avatar von Don Philippo
    Don Philippo Don Philippo ist offline Mitglied Bronze
    Registriert seit
    Nov 2005
    Beiträge
    43
    Hey CPoly,

    Danke. Das ging ja schnell!!
    Funktioniert astrein. Kurz und bündig, somit mehr als elegant!

    Hier der Beweis im Bild als Anhang.

    Großes MERCI!!
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Dynamisch auf nicht-dynamisch erstellte Controls zugreifen-bp01.jpg  
     
    Gruß,
    Philipp


    http://www.my-ppl.de

  4. #4
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Ich muss nochmal antworten, weil mir eben aufgefallen ist, dass es wesentlich eleganter funktioniert, ohne dass man ständig in eine Exception rennt, die man dann abfängt.

    Code :
    1
    2
    3
    4
    5
    
    foreach (Control c in panel1.Controls)
    {
    if(c is PictureBox)
        ((PictureBox)c).Image = Image.FromFile("c:\\a.jpg");
    }
     

  5. #5
    Avatar von Don Philippo
    Don Philippo Don Philippo ist offline Mitglied Bronze
    Registriert seit
    Nov 2005
    Beiträge
    43
    Hat alles wunderbar funktioniert.
    Nun hab ich noch ein kleines Problemchen, in der Hoffnung, dass ihr mir helfen könnt?!

    Hab z.B. nun 49 Pictureboxen denen ich je nach Lottoergebnis neue Bilder zuordnen möchte.
    Z.B. kann man auch dynamisch den Picturebox-Namen "zusammenbauen" und dann dieser PB ein neues Bild zuweisen!?
    Anders erklärt möchte ich den Index im PictureBox-Namen dynamisch bestimmen und dann ein Bild genau der Box zuweisen, die diesen Index im Namen beinhaltet.

    In etwa so (schematisch) für "pictureBox27.Image":
    Code :
    1
    2
    
    int i = 27;
    [COLOR="DarkRed"]"pictureBox2"[/COLOR]+i.ToString().[COLOR="MediumTurquoise"]Image[/COLOR]() .... = [COLOR="MediumTurquoise"]Image[/COLOR].FromFile(...

    Nicht lachen, sieht jetzt vielleicht blöd aus, aber ich hoffe ich konnte es so am anschaulichsten vermitteln!

    Wisst ihr ne elegente Lösung?
    Geändert von Don Philippo (29.06.10 um 12:23 Uhr)
     
    Gruß,
    Philipp


    http://www.my-ppl.de

  6. #6
    Masterclavat Masterclavat ist offline Mitglied Brokat
    Registriert seit
    Oct 2007
    Beiträge
    325
    Das geht über die Eigenschaft "Controls" der System.Windows.Forms-Klasse.

    Etwa so:

    Code csharp:
    1
    2
    
    int i = 27;
    (PictureBox)(this.Controls["pictureBox2"+i.ToString()]).Image = Image.FromFile(...
    Geändert von Masterclavat (29.06.10 um 12:45 Uhr)
     

  7. #7
    Avatar von Don Philippo
    Don Philippo Don Philippo ist offline Mitglied Bronze
    Registriert seit
    Nov 2005
    Beiträge
    43
    Merci für die schnelle Antwort.
    Genauso brauch ich's!

    Leider funktioniert das noch nicht so. Bekomm ecklige Compiler-Fehler.

    Bei folgendem Code kennt er die Definition "Image" nicht ... erst, wenn ich die Klammern (rot) drumrummsetz compiliert das System
    Code :
    1
    2
    3
    4
    5
    
    ...
     
    [B][COLOR="Red"]([/COLOR][/B](PictureBox)(this.Controls["pictureBox" + aiGen[iGenIdx].ToString()])[B][COLOR="Red"])[/COLOR][/B].Image = Image.FromFile(...
     
    ...

    Dann bekomm ich jedoch während der Programmausführung Fehlermeldungen, die ich aber nicht nachvollziehen kann (siehe Bild im Anhang).

    Freu mich auf antwort!
    Danke!
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Dynamisch auf nicht-dynamisch erstellte Controls zugreifen-dynpb.jpg  
     
    Gruß,
    Philipp


    http://www.my-ppl.de

  8. #8
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Mein ehemaliger Informatikprofessor würde sich im Grab umdrehen, wenn er tot wäre und das lesen würde. Fast jede Vorlesung hat er auf uns eingeprügelt: "Nicht mehr als einen Seiteneffekt pro Anweisung verursachen, sonst verliert ihr die Übersicht!".

    Genau das rate ich auch dir: Teil diese Monsteranweisung einfach mal schön Schritt für Schritt auf. Erstens weisst du dann, wo genau der Fehler liegt und zweitens kannst du prüfen, wie die einzelnen Werte bisher ausgewertet wurden und du kannst auch sicherstellen, dass die Auswertungsreihenfolge so ist, wie du es erwartest.
     

  9. #9
    Avatar von Don Philippo
    Don Philippo Don Philippo ist offline Mitglied Bronze
    Registriert seit
    Nov 2005
    Beiträge
    43
    Jepp! Danke!
    Unser Prof sagte immer: "Manchmal hilft auch 'n Tritt in den Hintern!"

    Danke! Hab's komplett zerlegt und einzeln "entkäfert".
    Echt peinlich. Die pictureBoxen sind nicht Teil des Hauptframes, sprich "this", sondern befinden sich in einem Panel "panelLottoSheet".
    Somit konnte nur NULL zurückgeben werden, weil das System die Bildboxen nicht gefunden hat!

    Jetzt sieht's so aus, der Vollständigkeit halber:
    Code :
    1
    
    ((PictureBox)([B][COLOR="Red"]panelLottoSheet[/COLOR][/B].Controls[sPbID])).Image = Image.FromFile(...

    Tja ... bei 32°C sollte man was anderes machen, als programmieren!

    Trotzdem nochmal DANKE für's PUSHEN!
     
    Gruß,
    Philipp


    http://www.my-ppl.de

Ähnliche Themen

  1. dynamisch erstellte Tables werden nicht angezeigt
    Von cimcime im Forum .NET Windows Forms
    Antworten: 2
    Letzter Beitrag: 17.02.08, 17:34
  2. [VB.Net] Dynamisch erstellte Controls und der Zugriff darauf
    Von Xervek im Forum .NET Windows Forms
    Antworten: 12
    Letzter Beitrag: 07.10.07, 09:25
  3. Dynamisch erstellte Radio's funktionieren im IE nicht
    Von luke_the_duke im Forum Javascript & Ajax
    Antworten: 9
    Letzter Beitrag: 12.10.06, 09:45
  4. Dynamisch erstellte Controls ansprechen
    Von nordkap im Forum .NET Windows Forms
    Antworten: 5
    Letzter Beitrag: 28.09.05, 20:57
  5. Dynamisch erstellte Server-Controls
    Von Calisto im Forum ASP
    Antworten: 1
    Letzter Beitrag: 09.03.02, 00:30

Stichworte