ComboBox SelectedIndexChanged



  • Guten Abend zusammen,

    ich habe eine Verständnisfrage was die Auswahl in einer ComboBox betrifft.
    Die Eigenschaften der Combobox:
    `

    AutoCompleteMode = SuggestAppend

    AutoCompleteSource = ListItems

    `

    Die Klasse:

    class Karte
        {
            public int ID { get; set; }
            public string Text { get; set; }
            public string Nummer { get; set; }
    
            public override string ToString()
            {
                return string.Format("{0}, Text {1}", Nummer, Text);
            }
        }
    

    Beispieldaten:

    karten.Add(new Karte { ID = 1, Nummer = "79505-23", Text = "Berlin" });
    karten.Add(new Karte { ID = 2, Nummer = "78421-45", Text = "Hamburg" });
    

    Hier mal der Code zur Auswahl der Daten

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        Karte karte = comboBox1.SelectedItem as Karte;
        if (karte != null)
        {
            comboBox1.Text = karte.Nummer.ToString();
    
            textBox1.Text = karte.ID.ToString();
            textBox2.Text = karte.Nummer.ToString();
            textBox3.Text = karte.Text;
        }
    }
    

    1. Möglichkeit Öffne ich nun über den Pfeil die Combobox und wähle mit der Maus einen Datensatz aus, dann erhalte ich trotz der Zeile

    comboBox1.Text = karte.Nummer.ToString();
    

    als Text 78421-45, Hamburg.
    Weshalb??

    2. Möglichkeit Öffne ich das DropDown nicht extra, sondern tippe direkt Zeichen in die ComboBox öffnet sich ja automatisch das DropDown des AutoComplete. Wähle ich hier nun einen Datensatz aus, so steht, wie in dem Fall erwartet nur die Nummer

    78421-45
    

    in der comboBox1.

    Die Textboxen werden in beiden Fällen korrekt befüllt.

    Was muss ich anpassen, damit ich bei beiden Auswahlmöglichkeiten die selbe Verhaltensweise der ComboBox habe??

    Erwünscht wäre in meinem Fall, dass wirklich nur die Nummer der Auswahl stehen bleibt.
    Generell interessiert mich aber, wie ich beide Verhalten beeinflussen kann, je nachdem wie es eben erforderlich ist.

    Ich hoffe, meine Frage ist verständlich?!
    Danke Für Eure Hilfe und noch einen schönen Abend!



  • Schau mal hier:

    Zitat:

    https://msdn.microsoft.com/de-de/library/system.windows.forms.combobox.text(v=vs.110).aspx schrieb:

    Remarks

    Setting the Text property to null or an empty string ("") sets the SelectedIndex to -1. Setting the Text property to a value that is in the Items collection sets the SelectedIndex to the index of that item. Setting the Text property to a value that is not in the collection leaves the SelectedIndex unchanged.

    Mit dem Setzen der Text-Property kannst du das selektierte Element ändern. Wenn du einen Text setzt, der kein Element der Liste widerspiegelt, bleibt alles wie es ist.


Log in to reply