Combobox Selektion aufheben



  • Hallo,
    ich sitze gerade richtig auf der Leitung:
    In einer Combobox hab ich mehrere Einträge. Nachdem der User einen selektiert und eine Aktion durchgeführt hat, soll die Combobox wieder leer sein d.h. die Einträge sollen natürlich vorhanden bleiben, aber eben nicht selektiert sein.
    daher funktioniert items.Clear() ja nicht, weil ich damit nur alles löschen würde.
    Tipps ... 😕

    DANKE!
    Roland





  • Kannst du den Text den du igrendwo hinterlegst mit box.items.add("hhh"); wieder mit box.default(); wieder zurück setzten ?

    Ich bin mir nicht sicher ob es so geht.



  • MSDNistDeinFreund schrieb:

    Kennst Du die MSDN?

    http://msdn.microsoft.com/de-de/library/system.windows.forms.combobox.selectedindex(VS.90).aspx

    Er schriebs doch.
    Setz SelectedIndex auf -1 und schon ist die alte Selektion nicht mehr vorhanden.



  • Das hatte ich sogar schon versucht:

    cbxInventory.SelectedIndex = -1;
    

    Allerdings kommt es dann in der Codezeile zur Fehlemeldung ...

    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.



  • Das kann nur sein, wenn cbxInventory = null ist.

    Wahrscheinlicher ist, dass die NullReferencException in cbxInventory_SelectedIndexChanged oder cbxInventory_SelectedValueChanged auftritt, weil Du dort ungeprüft auf das ausgewählte Element zugreifst. Und das existiert nicht.

    if(cbxInventory.SelectedItem != null)
    { ... }



  • Genau, das vermute ich auch.
    Es ist natürlich zu beachten, sobald man das SelectedIndex selber setzt (auch auf -1), wird das SelectionChanged Event angetriggert.



  • Leider hab ich das Problem immer noch nicht gelöst ...

    Beim ersten Aufruf wird mir -1 für cbxInventory.SelectedIndex ausgegeben.
    Bei einer Auswahl entsprechend 0, 1, ... dies bleibt dann auch so bestehen?!?!



  • Gib Dir mal Mühe mit der Fragestellung und zur Belohnung gibt's dann auch eine Lösung für Dein Problem.
    Ein wenig Code wäre vielleicht auch ganz hilfreich, hmm?



  • Entschuldigung ... in der Hektik ... hier die ausführliche Version.

    Auf einer Form habe ich einen Button, beim Klick darauf werden bestimmte Elemente sichtbar u.a. eine ComboBox. Zu diesem Zeitpunkt hat die cbxInventory den SelectedIndex = -1

    Nun fülle ich die Felder aus bzw. selektiere aus meiner Combobox (SelectedIndex ändert sich auf 0, 1, usw. ).

    Am Ende sollen die Daten, die in die Felder eingetragen werden auch gespeichert werden und die Felder wieder zurückgesetzt bzw. geleert werden.

    private void btnNewInventory_Click(object sender, EventArgs e)
    {
       cbxInventory.Visible = true;
    }
    
    ....
    
    private void btnInventorySave_Click(object sender, EventArgs e)
    {
    ....
    cbxInventory.SelectedIndex = -1;
    txtdimension.Text = "";
    ...
    }
    

    Nun meine Frage, wie kann ich - entweder beim Sichtbarmachen des Buttons oder nach dem Speichern - meine Auswahl aus der ComboBox löschen?



  • Genau so: cbxInventory.SelectedIndex = -1;

    Wurde doch alles schon erklärt.
    Dadurch werden events getriggert, in denen cbxInventory.SelectedItem == null ist. Das muss abgefangen werden.

    Wo ist noch das Problem?



  • Problem ist, dass nach dem Befehl cbxinventory.SelectedIndex = -1 immer noch ein Text in meiner Combobox steht ... 😞



  • Kann ich kaum glauben.

    Kannst Du mal ein minimales und kompilierbares Beispiel bauen?


  • Administrator

    ComboBox.Text = "";

    Problem ist, dass du wahrscheinlich ComboBoxStyle.DropDown ausgewählt hast. Damit ist ein Eingabefeld vorhanden. Auch wenn kein Element ausgewählt wird, bleib der Text im Eingabefeld.

    Grüssli


Log in to reply