VB. NET Key Capture в TextBox для запуска различных SUB - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь сделать, когда пользователь вводит значение в текстовое поле и нажимает ENTER, ожидая другого ввода между ENTER и *. если он набирает ENTER, сделайте что-то, а если он набирает *, сделайте что-нибудь еще.

Textinput> ENTER KEY> ENTER KEY> SUB1 ()

Textinput> ENTER KEY> * KEY> SUB2 ()

Я не могу обернуть наилучший способ выполнить это.

Спасибо

1 Ответ

1 голос
/ 10 июля 2020

Не ~ совсем ~ уверен, что я следую, но, возможно, что-то вроде ниже приведет вас туда, где вам нужно быть.

Label1 сообщает пользователю, является ли то, что они вводят, действительным или недействительным, когда они нажмите Enter. Если действительный и ввод повторяется снова, он добавляется в ListBox1 (сетка в вашем случае). После того, как запись сделана, если они нажмут «», он перейдет go в режим «редактирования». Если они напечатают что-нибудь еще, все будет сброшено, и ввод «» ничего не даст.

Private EntryAdded As Boolean = False
Private ValidEntryMade As Boolean = False

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    Label1.Text = ""
    ValidEntryMade = False
End Sub

Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp
    If e.KeyCode = Keys.Enter Then
        If Not ValidEntryMade Then
            ValidEntryMade = IsValid(TextBox1.Text)
            Label1.Text = If(ValidEntryMade, "Valid", "Invalid")
        Else
            ListBox1.Items.Add(TextBox1.Text)
            TextBox1.Clear()
            ValidEntryMade = False
            EntryAdded = True
        End If
    End If
End Sub

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
    If EntryAdded AndAlso e.KeyChar = "*" Then
        e.Handled = True
        TextBox1.Clear()
        MessageBox.Show("Editing")
    End If
    EntryAdded = False
End Sub

Private Function IsValid(ByVal entry As String) As Boolean
    ' ... however you do this ...
    Return (entry.Length = 6)
End Function
...