【发布时间】:2009-12-16 04:17:25
【问题描述】:
Visual Studio 很好地为文本框和组合框提供了内置的自动完成功能。我正在使用自动完成的建议方法,该方法根据用户的类型为用户提供选择过滤器列表。我遇到的问题是,当用户(通过鼠标)进行选择时,VS 将选定的文本放入文本框中,并模拟在文本框上按下回车键。
在我的程序中,enter keyup 事件用于将在文本框中输入的文本发送到 COM 端口。为了让它按需要工作,用户必须能够选择一个自动完成选项,然后添加到它,以便他们可以更改设置。
是否可以阻止它触发该事件或拦截它?我不确定是否有可能或如何确定按键的来源。
这里是 KeyUp 和 KeyPress 事件的代码:
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
自动完成功能是通过控件的属性实现的,唯一的代码就是生成自动完成列表。
提前感谢您的帮助。
附:我正在使用 VB.net,但如有必要,我可以弄清楚如何将其从另一种 .net 语言转换为 VB
【问题讨论】:
标签: vb.net visual-studio-2008 autocomplete