我正在使用VB.NET 2008的.NET 3.5框架.
我的表格中有一些文本框.当我的用户在我的一个文本框上按下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
Run Code Online (Sandbox Code Playgroud)
但它对我不起作用.
解决办法是什么?
Din*_*age 35
在KeyDown事件中:
If e.KeyCode = Keys.Enter Then
Messagebox.Show("Enter key pressed")
end if
Run Code Online (Sandbox Code Playgroud)
Eri*_*der 25
确保将表单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
Run Code Online (Sandbox Code Playgroud)
Tar*_*req 11
无需将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
Run Code Online (Sandbox Code Playgroud)
现在,当您在TextBox上按Enter键时,控件将移动到下一个控件.
小智 9
我正在使用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
Run Code Online (Sandbox Code Playgroud)
奇迹般有效!
您可以使用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
Run Code Online (Sandbox Code Playgroud)
在VB.NET 2010上测试过
| 归档时间: |
|
| 查看次数: |
284789 次 |
| 最近记录: |