Во-первых, позвольте мне указать, что ваш метод OpenFolder()
не отвечает за этот звуковой сигнал, событие KeyPress
.Это стандартное поведение Windows, когда клавиша нажата, когда ей нечем заняться.
Теперь, установив SuppressKeyPress
в значение true, на самом деле должно предотвратить запуск события KeyPress
и, следовательно,звуковой сигнал не должен воспроизводиться.Однако в некоторых случаях, когда вы выполняете некоторый код в событии KeyDown
, требуется время для подавления нажатия клавиши и, следовательно, для подачи звукового сигнала.
Чтобы обойти это, вы можете просто подписаться наKeyPress
событие и установите для e.Handled
значение true:
Private Sub TreeViewDir_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TreeViewDir.KeyPress
If e.KeyChar = ChrW(Keys.Enter) Then e.Handled = True
End Sub
Другое решение, если вы не хотите использовать KeyDown
, - это дать некоторое время для подавления нажатия клавиши, отложив выполнение вашего метода:
Private Async Sub TreeViewDir_KeyDown(sender As Object, e As KeyEventArgs) Handles TreeViewDir.KeyDown
' ^^^^^ ⟸ Don't forget the Async keyword.
If e.KeyCode = Keys.Enter Then
e.SuppressKeyPress = True ' This is first
Await Task.Delay(100) ' Followed by a small delay
OpenFolder() ' Then call the method.
End If
End Sub