c# - .NET 中基于屏幕键盘的组合框建议

标签 c# vb.net combobox on-screen-keyboard suggestbox

我正在VB.NET中开发一个应用程序,但答案也可能是基于C#的。我的问题是:我有一个用于过滤某些数据的组合框,并且我需要根据之前编写的内容(例如 Google 搜索栏)实现搜索建议。如果用户从物理键盘插入过滤条件,一切都很好(因为我在 Suggest 上设置了 AutoCompleteMode ,在 上设置了 AutoCompleteSource列表项目)。但我正在开发的应用程序还为用户提供了数字屏幕键盘,如下所示:

enter image description here

如果需要任何代码示例,我将提供,但键盘的功能很简单:获取书面文本,附加最后按下的键,用新附加的文本覆盖文本框。到目前为止,当用户通过该屏幕键盘插入输入时,不再显示建议。有什么方法可以使用屏幕键盘实现与物理键盘相同的行为吗?谢谢,祝你有美好的一天!

编辑:这是键盘工作方式的代码:

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 

最佳答案

根据吉米的建议,我将发布我在这里找到的解决方案作为答案,以防其他人也遇到这个问题。如果键盘用于此特定组合框,我在提供的 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 

仅过滤器组合框需要此行为,因为它是唯一对用户有意义的建议。

关于c# - .NET 中基于屏幕键盘的组合框建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62696718/

相关文章:

qt - QML 覆盖项样式

c# - System.Version 未在 F# 中实现 System.IComparable

c# - 如何使用 LINQ 从列表中获取重复项?

c# - 尝试播放流中的声音;文件以.mp3开头,然后是byte []数组,然后是流。.为什么它不起作用?

c# - MVC4 WebAPI 过滤器 : any way to stub Filter. 顺序?

c# - 使用 .net 应用程序从移动设备读取短信?

javascript - 我无法让这个 Jquery Image ComboBox 工作

c# - 为什么终止 Excel 进程是一件坏事?

vb.net - 通过类名获取元素进行点击

带有 IsEditable ="True"的 WPF ComboBox - 如何指示未找到匹配项?