none
Variable in Syntax RRS feed

  • Frage

  • Hallo Leute,

    jetzt komme ich mal wieder mit meinen blöden Fragen. Ich habe ein echt banales Problem.

    ich möchte gerne

    PictureBox3.Image = My.Resources.d_0_L

    hier statt "d_0_L" "d_<integer>_L" einsetzten.

    Vielen Dank und Entschuldigung für meine blöden Fragen,

    Dark Nerv


    Freitag, 15. August 2014 11:09

Antworten

  • Hi Dark Nerv,

    das wird so nicht einfach Klappen, da d_0_L eher eher der Property/Methode eines Objektes entspricht. 

    Ich denke der einfachste Weg hier ist die Bilder in eine List oder bei bedarf in ein Dictonary zu laden. Und dann darauf zuzugreifen.

    Theoretisch könnte es auch über Reflection Funktionieren, das ist dann aber etwas komplizierte und nicht wirklich Performant.

    MFG

    Björn

    Freitag, 15. August 2014 11:37
  • Hallo,
    da du scheinbar verschiedene Resourcen auslesen willst, kannst du über Reflection arbeiten:
    Dim type = GetType(My.Resources.Resources) 'Die Kalsse mit den Bildern'
    Dim props = type.GetProperties(BindingFlags.Public Or BindingFlags.Static) 'Alle Eigenschaftennamen abrufen'
    
    'Bilder anhand von Namen abrufen:'
    'Name dynamisch erzeugen:'
    'dim name = "d_" & integ & "_L"' PictureBox1.Image = CType(props.First(Function(x) x.Name = "d_0_L").GetValue(Nothing), Image) PictureBox2.Image = CType(props.First(Function(x) x.Name = "d_1_L").GetValue(Nothing), Image) PictureBox3.Image = CType(props.First(Function(x) x.Name = "d_2_L").GetValue(Nothing), Image)
    Beachte aber, das sich der Aufwand nur lohnt, wenn du wirklich sehr viele Bidler zuweisen musst und du auch die PictureBoxen in einer Schleife o.ä. verarbeiten kannst.
    Diese Lösung ist nämlich langsamer als der Standardcode und auch Fehleranfälliger.

    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Freitag, 15. August 2014 15:55
    Moderator

Alle Antworten

  • Hi Dark Nerv,

    das wird so nicht einfach Klappen, da d_0_L eher eher der Property/Methode eines Objektes entspricht. 

    Ich denke der einfachste Weg hier ist die Bilder in eine List oder bei bedarf in ein Dictonary zu laden. Und dann darauf zuzugreifen.

    Theoretisch könnte es auch über Reflection Funktionieren, das ist dann aber etwas komplizierte und nicht wirklich Performant.

    MFG

    Björn

    Freitag, 15. August 2014 11:37
  • Vielen Dank erstmal für die Antwort. Ich finde es super, dass Leute sich hier die Mühe machen, und anderen helfen!

    Könnten Sie mir bitte ein Codebeispiel geben?!

    Das wäre sehr nett!

    Vielen Dank,

    Dark Nerv

    Freitag, 15. August 2014 12:01
  • Hallo,
    da du scheinbar verschiedene Resourcen auslesen willst, kannst du über Reflection arbeiten:
    Dim type = GetType(My.Resources.Resources) 'Die Kalsse mit den Bildern'
    Dim props = type.GetProperties(BindingFlags.Public Or BindingFlags.Static) 'Alle Eigenschaftennamen abrufen'
    
    'Bilder anhand von Namen abrufen:'
    'Name dynamisch erzeugen:'
    'dim name = "d_" & integ & "_L"' PictureBox1.Image = CType(props.First(Function(x) x.Name = "d_0_L").GetValue(Nothing), Image) PictureBox2.Image = CType(props.First(Function(x) x.Name = "d_1_L").GetValue(Nothing), Image) PictureBox3.Image = CType(props.First(Function(x) x.Name = "d_2_L").GetValue(Nothing), Image)
    Beachte aber, das sich der Aufwand nur lohnt, wenn du wirklich sehr viele Bidler zuweisen musst und du auch die PictureBoxen in einer Schleife o.ä. verarbeiten kannst.
    Diese Lösung ist nämlich langsamer als der Standardcode und auch Fehleranfälliger.

    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Freitag, 15. August 2014 15:55
    Moderator