ich ein Benutzerformular mit einem Dropdown-Kombination, die mit Gegenständen gefüllt wird, wenn die Form geöffnet wird. Wenn das Feld des Fokus hat, auf den Auf-/Ab-Pfeiltasten radelt durch die Elemente (wie es sein soll), oder der Benutzer kann aus der Dropdown-Liste auswählen und noch in der Lage sein, die noch nach oben/unten Pfeilen von dort. Wenn der Benutzer mit der Eingabe beginnt, wird die Box so eingestellt, dass sie aus den Listenelementen anfügt, aber dadurch werden die AUF-/AB-Pfeiltasten deaktiviert, um ALLE Elemente durchzulaufen. An diesem Punkt werden nur die Elemente durchlaufen, die mit dem beginnen, was der Benutzer eingegeben hat. Ich möchte es die eingegebenen Daten und durch alle die Combobox Elemente zu löschen (am Index begann, was angehängt wurde) so wie es in der VBA-Version der Fall ist.Visual Studio ComboBox läuft nicht durch die Elemente mit Auf-/Ab-Pfeile, sobald der Benutzer Typen
Auch wenn der Benutzer tippt etwas, wählt dann ein ganz anderes Element aus der Dropdown-Liste das nächste Mal nach oben/unten Tasten gedrückt werden, es geht nur zurück, was auch immer eingegeben wurde.
ich versucht, dies in den Pfeil Griff nach oben/unten keydown (oder keyup) wie folgt:
Private Sub SeriesBox_KeyDown(sender As Object, e As KeyEventArgs) Handles SeriesBox.KeyDown
Dim CurIndex As Integer = SeriesBox.FindStringExact(SeriesBox.Text)
Select Case e.KeyCode
Case Keys.Down
SeriesBox.Text = String.Empty
SeriesBox.SelectedIndex = CurIndex + 1
Case Keys.Up
SeriesBox.Text = String.Empty
SeriesBox.SelectedIndex = CurIndex - 1
End Select
End Sub
Mit den Pfeiltasten tatsächlich diese Unter nicht geben, also versuchte ich hinzufügen:
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keydata As Keys) As Boolean
If keydata = Keys.Right Or keydata = Keys.Left Or keydata = Keys.Up Or keydata = Keys.Down Then
OnKeyDown(New KeyEventArgs(keydata))
ProcessCmdKey = True
Else
ProcessCmdKey = MyBase.ProcessCmdKey(msg, keydata)
End If
End Function
Aber dies scheint keinen Unterschied zu machen. Gibt es etwas, das mir fehlt?
Können Sie nicht eine If-Anweisung verwenden? 'Wenn combobox_text =" "Dann arrowkey_keypress tut x, sonst arrowkey_keypress springt zum ersten angehängten Wert und geht nur zu angehängten Werten" Ich weiß, das ist Pseudocode, aber so etwas ist einen Versuch wert, hängt von Ihrem VB Erfahrungslevel – David