我知道这个问题已经被问过很多次,但是如果所有的答案都不起作用怎么办?我正在使用Visual Studio 2017重写vb6应用程序,该应用程序捕获了组合键“ ctrl + enter”以加载对话框。我从名为CourtName的文本框中很好地捕获了组合键,但是无法摆脱它附带的烦人的“叮”声。我已经搜索了多个小时,但无处不在,答案是使用e.Handled和/或e.SuppressKeyPress,但我没有成功。这是我的代码:
Private Sub CourtName_KeyDown(sender As Object, e As KeyEventArgs) Handles CourtName.KeyDown
If e.KeyCode = Keys.Enter AndAlso e.Control Then
e.Handled = True
e.SuppressKeyPress = True
CourtsBtn.PerformClick()
End If
End Sub
无论e.Handled和e.SuppressKeyPress语句是在PerformClick()语句之前还是之后,都仍然存在。我想念什么魔术?
我刚刚测试了这段代码,无论Enter
是否使用了哪些修饰符,都没有响声。
Public Class Form1
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
'Suppress Windows audio feedback.
e.Handled = True
e.SuppressKeyPress = True
End If
If e.KeyData = (Keys.Control Or Keys.Enter) Then
Button1.PerformClick()
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Console.WriteLine("Button1_Click")
End Sub
End Class
您可以测试相同的代码,看看它是否对您有用?
尝试替换以下代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TextBox1.Multiline = True
MsgBox("Pressed!")
End Sub
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyData = Keys.Control + Keys.Enter Then
TextBox1.Multiline = False
AcceptButton.PerformClick()
End If
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
TextBox1.Multiline = True
End Sub
享受!