C# 4 Textboxen ansprechen über Listbox Items

  • C#

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    C# 4 Textboxen ansprechen über Listbox Items

    Hi liebe Community...

    ich hätte eine Frage bezüglich Listbox Items und Textboxen.

    Und zwar hab ich eine Win.Form mit einer Listbox und 4 Textboxen.
    in Der Listbox sind nun mehr als 30 Items eingetragen und jedes item soll 4 string werte über meiner resx datei zugewiesen werden

    C#-Quellcode

    1. private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    2. {
    3. if (lbSyn.SelectedIndex >= 0)
    4. { ClearTextBoxes(this.Controls); }
    5. if (lbSyn.SelectedItem.ToString() == GlobalStrings.Assassin)
    6. {
    7. tbSyn1.Text = (GlobalStrings.Assassin_1);
    8. tbSyn2.Text = (GlobalStrings.Assassin_2);
    9. tbSyn3.Text = (GlobalStrings.Assassin_3);
    10. tbSyn4.Text = (GlobalStrings.Assassin_4);
    11. }
    12. if (lbSyn.SelectedItem.ToString() == GlobalStrings.Assault_Armament)
    13. {
    14. tbSyn1.Text = (GlobalStrings.Assault_Armament_1);
    15. tbSyn2.Text = (GlobalStrings.Assault_Armament_2);
    16. tbSyn3.Text = (GlobalStrings.Assault_Armament_3);
    17. }
    18. if (lbSyn.SelectedItem.ToString() == GlobalStrings.Brutal)
    19. {
    20. tbSyn1.Text = (GlobalStrings.Brutal_1);
    21. tbSyn2.Text = (GlobalStrings.Brutal_2);
    22. tbSyn3.Text = (GlobalStrings.Brutal_3);
    23. tbSyn4.Text = (GlobalStrings.Brutal_4);
    24. }
    25. if (lbSyn.SelectedItem.ToString() == GlobalStrings.Cannoneer)
    26. {
    27. tbSyn1.Text = (GlobalStrings.Cannoneer_1);
    28. tbSyn2.Text = (GlobalStrings.Cannoneer_2);
    29. tbSyn3.Text = (GlobalStrings.Cannoneer_3);
    30. tbSyn4.Text = (GlobalStrings.Cannoneer_4);
    31. }


    nun wird der Code aber unendlich lang gibt es eine variante wie ich die ganzen if's abkürzen kann ?

    Lg ShowDown
    @showDown Willkommen im Forum. :thumbup:
    Wenn Du die TextBoxen einerseits und Deine Ressourcen andererseits geschickt in Tabellen packst und bei den ifs die Indizes belegst, ließe sich da noch was zusammenschieben.
    Ob Du das allerdings in einem halben Jahr noch verstehst, ist nicht sicher.
    Pack die ganzen if-Blöcke in einen #region-Block

    C#-Quellcode

    1. #region NAME
    2. // Dein Code
    3. #endregion
    Die Region kannst Du zusammenklappen und ist dann auch verschwunden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mir schein, als ob du sowas wie Charaktere hast. Diese haben wohl Eigenschaften, welche in den Textboxen angezeigt werden sollen. Falls das so ist, folgender Vorschlag:

    Schreibe eine Klasse Charakter, welche diese Eigenschaften beherbergt. Dann erzeugst du für jeden Charakter eine Instanz und weist dieser die entsprechenden Eigenschaften zu. Diese Instanzen fügst du in die ListBox ein. Dann musst du der Listbox einen DisplayMember (also die Eigenschaften die als Anzeige in der ListBox verwendet werden soll) zuweisen.

    Dann kannst du bei der Auswahl eines Charakters auf das ganze Objekt "Charakter" und dessen Eigenschaften zugreifen und in den Textboxen anzeigen.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen