.NET 中基于屏幕键盘的 ComboBox 建议
ComboBox Suggestion Based On On-Screen Keyboard In .NET
我正在 VB.NET 中开发应用程序,但答案也可能基于 C#。我的问题是:我有一个用于过滤某些数据的组合框,我需要根据之前编写的内容(例如 Google 搜索栏)实施搜索建议。如果用户从物理键盘插入过滤条件,一切都很好(因为我在 Suggest 和 AutoCompleteSource 上设置了 AutoCompleteMode 在 ListItems 上)。但是我正在开发的应用程序还为用户提供了一个数字屏幕键盘,如下所示:
如果需要任何代码示例,我会提供,但键盘的功能很简单:获取书面文本,附加最后按下的键,用新的附加文本覆盖文本框。到目前为止,当用户从这个屏幕键盘插入输入时,建议不再显示。有什么方法可以使用屏幕键盘实现相同的行为,就像使用物理键盘一样?谢谢,祝你有美好的一天!
编辑:这是键盘工作方式的代码:
Private Sub AppendKey (ByVal key As String)
Dim str1 As String = cboFilter.Text
str1 = str1 & key
cboFilter.Text = str1
cboFilter.Focus()
cboFilter.SelectionStart = cboFilter.Text.Length
End Sub
根据 Jimi 的建议,我将 post 我在此处找到的解决方案作为答案,以防其他人也遇到此问题。如果键盘用于这个特定的组合框,我在提供的 Sub 中添加了对以下新创建的 Sub 的调用:
Private Sub AppendKey (ByVal key As String)
If currentCbo = cboFilter Then
'currentCbo holds the currently editting combobox'
AppendKeyInFilterCbo(key)
Else
'The normal behaviour for the other comboboxes'
Dim str1 As String = currentCbo.Text
str1 = str1 & key
currentCbo.Text = str1
currentCbo.Focus()
currentCbo.SelectionStart = currentCbo.Text.Length
End If
End Sub
Private Sub AppendKeyInFilterCbo (ByVal key As String)
cboFilter.Focus()
cboFilter.SelectionStart = cboFilter.Text.Length
SendKeys.Send("{" + key + "}")
End Sub
只有过滤器组合框需要此行为,因为只有它的建议对用户有意义。
我正在 VB.NET 中开发应用程序,但答案也可能基于 C#。我的问题是:我有一个用于过滤某些数据的组合框,我需要根据之前编写的内容(例如 Google 搜索栏)实施搜索建议。如果用户从物理键盘插入过滤条件,一切都很好(因为我在 Suggest 和 AutoCompleteSource 上设置了 AutoCompleteMode 在 ListItems 上)。但是我正在开发的应用程序还为用户提供了一个数字屏幕键盘,如下所示:
如果需要任何代码示例,我会提供,但键盘的功能很简单:获取书面文本,附加最后按下的键,用新的附加文本覆盖文本框。到目前为止,当用户从这个屏幕键盘插入输入时,建议不再显示。有什么方法可以使用屏幕键盘实现相同的行为,就像使用物理键盘一样?谢谢,祝你有美好的一天!
编辑:这是键盘工作方式的代码:
Private Sub AppendKey (ByVal key As String)
Dim str1 As String = cboFilter.Text
str1 = str1 & key
cboFilter.Text = str1
cboFilter.Focus()
cboFilter.SelectionStart = cboFilter.Text.Length
End Sub
根据 Jimi 的建议,我将 post 我在此处找到的解决方案作为答案,以防其他人也遇到此问题。如果键盘用于这个特定的组合框,我在提供的 Sub 中添加了对以下新创建的 Sub 的调用:
Private Sub AppendKey (ByVal key As String)
If currentCbo = cboFilter Then
'currentCbo holds the currently editting combobox'
AppendKeyInFilterCbo(key)
Else
'The normal behaviour for the other comboboxes'
Dim str1 As String = currentCbo.Text
str1 = str1 & key
currentCbo.Text = str1
currentCbo.Focus()
currentCbo.SelectionStart = currentCbo.Text.Length
End If
End Sub
Private Sub AppendKeyInFilterCbo (ByVal key As String)
cboFilter.Focus()
cboFilter.SelectionStart = cboFilter.Text.Length
SendKeys.Send("{" + key + "}")
End Sub
只有过滤器组合框需要此行为,因为只有它的建议对用户有意义。