Visual Studio предоставляет встроенные функции автозаполнения для текстовых и комбинированных полей. Я использую предложенный метод автозаполнения, который предоставляет пользователю список фильтров по типу. У меня проблема в том, что когда пользователь делает выбор (с помощью мыши), VS помещает выделенный текст в текстовое поле, а также имитирует нажатие клавиши ввода в текстовом поле.
В моей программе событие enter keyup используется для отправки текста, введенного в текстовое поле, в COM-порт. Чтобы это работало как нужно, пользователь должен иметь возможность выбрать параметр автозаполнения, а затем добавить его, чтобы они могли изменять настройки.
Можно ли остановить его от запуска этого события или перехватить его? Я не уверен, возможно ли это или как определить происхождение нажатия клавиши.
Вот код для KeyUp, даже для KeyPress Event:
Private Sub txtInput_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtInput.KeyPress
If e.KeyChar = Chr(13) Then
e.Handled = True
End If
End Sub
Private Sub txtInput_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtInput.KeyUp
If e.KeyValue = Keys.Enter Then
If txtInput.Text.ToLower = "cls" Or txtInput.Text.ToLower = "clr" Or txtInput.Text.ToLower = "clear" Then
txtOutput.Text = ""
Else
If SerialPort1.IsOpen Then
SerialPort1.Write(txtInput.Text)
Else
MsgBox("The serial port is not open")
End If
End If
txtInput.Text = ""
e.Handled = True
e.SuppressKeyPress = True
End If
End Sub
Функция автозаполнения была реализована через свойства элемента управления, единственным кодом для которого было генерирование списка автозаполнения.
Заранее спасибо за любую помощь.
P.S. Я использую VB.net, но при необходимости я могу выяснить, как получить его с другого языка .net на VB