Combobox mit AutoCompleteMode und Dropdownlist (oder ähnlich)

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Combobox mit AutoCompleteMode und Dropdownlist (oder ähnlich)

    Hallo zusammen,

    ich möchte den AutoCompleteMode meiner Combobox anwenden, da es >50 Einträge gibt. Ich habe die AutoCompleteSource auf ListItems gesetzt.

    Jetzt möchte ich aber, dass der Benutzer nur Werte aus der Combobox übernehmen kann. Üblicherweise setzte ich dabei DropDownStyle auf DropDownList.

    Das Problem ist jetzt nur, dass der AutoCompleteMode nicht mehr so funktioniert, da der Benutzer ja nicht mehr in die Combobox rein schreiben kann.

    Stand jemand von euch schon vor dem gleichen Problem?
    Gruß von der KSE

    ks-entwicklung.de
    Ich habe mir jetzt selbst eine Auswertung geschrieben. Wer es mal brauchen kann!

    Bitteschön:

    VB.NET-Quellcode

    1. 'Im Load Event Handler erzeugen
    2. For Each ctl As Control In Me.Controls
    3. If TypeOf ctl Is ComboBox Then
    4. With DirectCast(ctl, ComboBox)
    5. AddHandler ctl.Validating, AddressOf validating_combobox
    6. End With
    7. End If
    8. Next


    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Überprüft, ob der eingegebene Text mit einem Item der Combobox übereinstimmt
    3. ''' Ist der Wert nicht gleich wird ein Fehler in Form eine Msg-Box angezeigt und der Benutzer kann
    4. ''' die Combobox nicht verlassen
    5. ''' </summary>
    6. ''' <param name="sender">Über den Sender wird das Control ermittelt</param>
    7. ''' <param name="e"></param>
    8. ''' <remarks></remarks>
    9. Sub Validating_combobox(sender As Object, e As System.ComponentModel.CancelEventArgs)
    10. If TypeOf sender Is ComboBox Then
    11. Dim cbx As New ComboBox
    12. cbx = DirectCast(sender, ComboBox)
    13. For Each itm As DataRowView In cbx.Items 'Da die Combobox datengebunden ist gehe ich über die DataRowView mit entsprechender Column
    14. If itm.Row(cbx.DisplayMember) = cbx.Text Then
    15. Exit Sub
    16. End If
    17. NextMsgBox("Der von Ihnen eingegebene Text ist kein Element der Dropdownliste!" & vbCr & "Korrigieren Sie Ihre Eingabe.", MsgBoxStyle.OkOnly Or MsgBoxStyle.Critical, "Fehlermeldung ...")
    18. e.Cancel = (cbx.Text <> String.Empty)
    19. End If
    20. End Sub
    Gruß von der KSE

    ks-entwicklung.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „KSE“ ()

    bei meine Versuche öffnet sich die Combo nicht richtig, wenn sie AutoComplete machen soll.

    Für AutoCompletion nehme ich immer eine Textbox und rüste die auf mit einer AutoCompletionSource - das verhält sich dann so wie etwa die Address-Eingabe im Browser (womit natürlich nocht nicht validiert ist).