У меня есть поле со списком, в который пользователь может ввести, чтобы отфильтровать результаты.
Чтобы реализовать это, я установил dropDownStyle на DropdownList и установил событие KeyUp следующим образом
Private Sub cbRPP_KeyUp(ByVal sender As Object, ByVal e As KeyEventArgs) Handles cbRPP.KeyUp
If boredUserProtection Then Return
If e.KeyCode = Keys.Enter Then
e.SuppressKeyPress = True
e.Handled = True
Return 'Boss doesn't want enter to do anything
End If
ComboKeyPressed()
End Sub
Private Sub cbRPP_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles cbRPP.SelectionChangeCommitted
If boredUserProtection Then Return 'boredUserProtection = a flag to prevent the user from typing into the box once they've entered some text
Try
boredUserProtection = True
menuButton.Select()
TooltipNotify("Loading")
cbRPP.Text = String.Empty
LoadRegion()
menuButton.Select()
Catch ex As Exception
ErrorReporter.Program.ReportError(ex, "RPPCalibator", "Handled Gracefully")
Finally
boredUserProtection = False
End Try
End Sub
Проблема в том, что теперь мой начальник попросил меня не предпринимать никаких действий при нажатии клавиши ввода.
Я пытался добиться этого, перехватывая нажатие клавиши и подавляя ввод, но кажется, что это не работает, когда dropdownStyle = dropdownList
Private Sub cbRPP_KeyPress(sender As Object, e As KeyPressEventArgs) Handles cbRPP.KeyPress
If e.KeyChar = vbCrLf Then
e.Handled = True
Return 'Boss doesn't want enter to do anything
End If
End Sub
Private Sub cbRPP_KeyDown(sender As Object, e As KeyEventArgs) Handles cbRPP.KeyDown
If e.KeyCode = Keys.Enter Then
e.SuppressKeyPress = True
e.Handled = True
Return 'Boss doesn't want enter to do anything
End If
End Sub
Мне просто интересно, может ли кто-нибудь пролить свет на то, как я могу предотвратить любые события, происходящие при вводе keyprss, поскольку один совет, который я могу легко найти в Google (перехват KeyDown или KeyUp), похоже, не работает .
(я прагматик, поэтому любая форма решения, которую вы имеете, будет высоко оценена)