Подтвердить что ты не робот

Обнаружение Enter keypress на VB.NET

Я использую среду .NET 3.5 для VB.NET 2008.

У меня есть текстовые поля в моей форме. Я хочу поведение типа tab, когда мой пользователь нажимает ENTER на одном из моих текстовых полей. Я использовал следующий код:

Private Sub txtDiscount_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtDiscount.KeyPress
    If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
        SendKeys.Send("{TAB}")
        e.Handled = True
    End If
End Sub

Но это не работает для меня.

Какое решение?

4b9b3361

Ответ 1

Нет необходимости устанавливать для свойства KeyPreview значение True. Просто добавьте следующую функцию.

Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, _
                                           ByVal keyData As System.Windows.Forms.Keys) _
                                           As Boolean

    If msg.WParam.ToInt32() = CInt(Keys.Enter) Then
        SendKeys.Send("{Tab}")
        Return True
    End If
    Return MyBase.ProcessCmdKey(msg, keyData)
End Function

Теперь, когда вы нажимаете Enter в текстовом поле, элемент управления переходит к следующему элементу управления.

Ответ 2

В событии KeyDown:

 If e.KeyCode = Keys.Enter Then
       Messagebox.Show("Enter key pressed")
 end if

Ответ 3

Убедитесь, что для свойства KeyPreview формы установлено значение true.

Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
    If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
        SendKeys.Send("{TAB}")
        e.Handled = True
    End If

End Sub

Ответ 4

Я использую VB 2010.NET 4.0 и использую следующее:

Private Sub tbSecurity_KeyPress(sender As System.Object, e As System.EventArgs) Handles tbSecurity.KeyPress
    Dim tmp As System.Windows.Forms.KeyPressEventArgs = e
    If tmp.KeyChar = ChrW(Keys.Enter) Then
        MessageBox.Show("Enter key")
    Else
        MessageBox.Show(tmp.KeyChar)
    End If

End Sub

Работает как шарм!

Ответ 5

Вы можете использовать событие PreviewKeyDown

Private Sub txtPassword_PreviewKeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles txtPassword.PreviewKeyDown
    If e.KeyCode = Keys.Enter Then
        Call btnLogin_Click(sender, e)
    End If
End Sub

Протестировано на VB.NET 2010

Ответ 6

также может попробовать следующее:

If e.KeyChar = ChrW(Keys.Enter) Then
     'Do Necessary code here
End If

Ответ 7

Я вижу, что на это был дан ответ, но похоже, что вы можете избежать всего этого "переназначения" ключа ввода, просто подключив свою проверку в AcceptButton в форме. то есть. у вас есть 3 текстовых поля (txtA, txtB, txtC) и кнопка "OK", установленная как AcceptButton (и TabOrder установлена ​​правильно). Итак, если в txtA и вы нажмете enter, если данные недействительны, ваш фокус останется в txtA, но если он действителен, если предположить, что другие txts нуждаются в вводе, проверка будет просто помещать вас в следующий txt, который требует действительного ввода, таким образом имитируя поведение TAB... как только все txts имеют действительный ввод, нажатие enter приведет к успешной проверке и закрытию формы (или что-то еще...) Имеет смысл?

Ответ 8

У меня была такая же проблема, и я не мог заставить этот ответ работать над Framework 2.0, поэтому я углублялся.

Вам нужно будет сначала обработать PreviewKeyDown в текстовом поле, так что при входе ENTER вы установили IsInputKey, чтобы он мог обрабатываться или пересылаться в событие keyDown в текстовом поле. Вот так:

Private Sub txtFiltro_PreviewKeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles txtFiltro.PreviewKeyDown
    Select Case e.KeyCode
        Case Keys.Enter
            e.IsInputKey = True
    End Select
 End Sub

а затем вы будете обрабатывать keydown событий в текстовом поле. Один из ответов был на правильном пути, но пропустил настройку e.IsInputKey.

Private Sub txtFiltro_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtFiltro.KeyDown
    If e.KeyCode = Keys.Enter Then
        e.handled = True
        Textbox1.Focus()
    End If
End Sub

Ответ 9

Private Sub BagQty_KeyPress(sender As Object, e As KeyPressEventArgs) Handles BagQty.KeyPress

        Select e.KeyChar

            Case Microsoft.VisualBasic.ChrW(Keys.Return)
                PurchaseTotal.Text = Val(ActualRate.Text) * Val(BagQty.Text)
        End Select


    End Sub

Ответ 10

используйте этот код, это может помочь вам получить вкладку, например, когда пользователь нажимает кнопку ввода

 Private Sub TxtSearch_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TxtSearch.KeyPress
    Try
        If e.KeyChar = Convert.ToChar(13) Then
           nexttextbox.setfoucus 
        End If
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

Ответ 11

Следующий код будет работать.

Public Class Form1
    Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar = Convert.ToChar(13) Then
            MsgBox("enter key pressd ")
        End If
    End Sub
End Clas

Public Class Form1
    Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        If e.KeyCode = Keys.Enter Then
            MsgBox("enter key pressd ")
        End If
    End Sub
End Class

Ответ 12

Используйте этот код, он будет работать нормально. Вы нажимаете на TextBox1, а затем переходите к событию и выбираете Keyup и дважды щелкаете по нему. Затем вы получите строки для SUB.

Private Sub TextBox1_KeyUp(ByVal sender As System.Object, ByVal e As      
System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
    If e.KeyCode = Keys.Enter Then
        MsgBox("Fel lösenord")

    End If
End Sub

Ответ 13

If Asc(e.KeyChar) = 13 Then
 MessageBox.Show("Enter pressed!")
 e.Handled = True
End If

Ответ 14

Если e.KeyCode = 13 Тогда SendKeys.Send({ "TAB" }) 'Инструкции End If