(C#) listBox zu textBox?

S

Slayer-Stiff

Hey,
bitte entschuldigt falls es dass hier schon mal gab, aber ich finds irgendwie nicht.

Ich möchte, dass wenn ich in der listBox etwas auswähle, daß dann ein bestimmter Text in der textBox erscheint.

//edit: achja, es wäre schön, wenn das mit mehreren Items ginge. Also für jede Auswahlmöglichkeit in der listBox einen dazugehörigen Text in der textBox.

Hab mir schon ein paar Antworten auf anderen Boards durchgelesen, aber die helfen mir nicht weiter.

Arbeite in Microsoft Visual C# 2005 wenn das irgendwie weiterhilft!?

Naja,
danke schonmal im voraus. Kann ja gut sein, dass ich einfach nur zu blöd bin...


MfG
 
Die ComboBox hat ein Event OnSelectedIndexChanged. Dieses musst du abonnieren um zu erfahren, dass sich der gewählte Eintrag geändert hat, sprich ein anderer ausgewählt wurde. Im Eventhandler dazu befüllst du dann deine TextBox.

Hier ein kleines Beispiel. Gehen wir davon aus, dass die ComboBox NameComboBox heißt und die TextBox SelectedTextBox

Nun musst du den Eventhandler hinzufügen. Dazu kannst du entweder im Designer vom Visual Studio deine ComboBox wählen und im Eigenschaften-Fenster gehst du dann auf die Events (der gelbe Pfeil) und machst einen Doppelclick auf SelectedIndexChanged. Oder du registrierst das Event manuell via
Code:
this.NameComboBox.SelectedIndexChanged += new System.EventHandler(this.NameComboBox_SelectedIndexChanged);

Nachdem der Eventhandler erstellt ist, musst du noch den notwendigen Code einfügen, das sieht dann so aus:
Code:
private void NameComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    this.SelectedTextBox.Text = NameComboBox.SelectedItem.ToString();
}
Und schon funktioniert es so wie es soll. Anbei noch ein Screenshot.
 

Anhänge

  • 27731attachment.png
    27731attachment.png
    4,5 KB · Aufrufe: 93
Danke Das hat mir auf jeden Fall schon mal sehr viel weiter geholfen
Jetzt habe ich nur noch eine Frage.

Wir haben das doch jetzt so definiert, dass wenn sich die Auswahl in der ComboBox (da in der Auswahlmöglichkeit) ändert, "Norbert" ausgegeben wird, oder?

Was mache ich aber, wenn ich z.B. machen will, dass es sich so verhält:

Klick auf "Begrüßung" -> Ausgabe von "Hallo" in der TextBox (in deinem Bsp. Selected Text Box)
Klick auf "Tschüss" -> Ausgabe von "Auf Wiedersehen" ebenfalls in der TextBox

Dann müsste ich doch was ändern (irgendwie logisch, oder?^^).
Aber wie?

Ich denke, dass ich ja dann was bei
Code:
this.NameComboBox.SelectedIndexChanged += new System.EventHandler(this.NameComboBox_SelectedIndexChanged);
oder
Code:
private void NameComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    this.SelectedTextBox.Text = NameComboBox.SelectedItem.ToString();
}
ändern muss. (Ich glaube irgendwie in der ersten Codebox).

Kann mir da vielleicht jemand helfen?

MfG
Slayer-Stiff
 
Ja, du musst in der TextBox je nachdem welcher Wert in der ComboBox ausgewählt wurde, einen anderen Text einfügen.
Code:
private void NameComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    if (NameComboBox.SelectedItem.ToString().ToLower() == "begrüßung")
        this.SelectedTextBox.Text = "Grüß dich";
    else if (NameComboBox.SelectedItem.ToString().ToLower() == "auf wiedersehen")
        this.SelectedTextBox.Text = "Tschüss";
}
Diese Variante sollte für deine Zwecke reichen.

Weiterführendes

Der obige Weg stellt keine saubere Lösung dar, da die Text statisch eingebunden sind. Idealerweise empfiehlt es sich hier die Texte aus beispielsweise XML-Dateien einzulesen, da diese dann geändert werden können, ohne die Anwendung selbst neu kompilieren zu müssen. Auch könnte mit Lokalisierung/Globalisierung gearbeitet werden um hier beispielsweise unterschiedliche Sprachen bedienen zu können. Zu den genannten Stichwörtern sollte in unseren .NET Foren viel Information gefunden werden können.
 
Zurück