ComboBox记住最近输入的值并可以自动完成

时间:2009-01-22 15:20:36

标签: vb.net combobox autocomplete

我正在用VB.NET开发桌面搜索引擎 我正在使用ComboBox来指定搜索查询(字符串)。 我希望ComboBox能够记住并显示最近的查询。 我还希望ComboBox在用户输入时尝试自动填充查询。

实施此方法的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

毫无疑问,这可以更优雅地完成,但这里是基本原则(对任何语法问题道歉,我不是一个VB人):

在KeyUp事件中:

  1. 确保该键不是导航键:
    if e.KeyCode <> Keys.Back [...]
    
  2. 在项目列表中搜索输入的文字:
    idx = myCombo.FindString(myCombo.Text)
    
  3. 获取组合找到的项目:
    s = myCombo.GetItemText(idx) 
    
  4. 将其插入.Text属性:
    myCombo.Text = s
    
  5. 请注意,这会改写用户输入的所有内容(销毁案例)。您可以通过添加“缺失”部分来改善这一点:

    stringToAppend = s.SubString(myCombo.Text.Length)
    myCombo.Text = myCombo.Text + stringToAppend
    

    最后,选择新文字,以便他们可以继续输入:

    myCombo.SelectionStart = myCombo.Text.Length - stringToAppend.Length
    myCombo.SelectionLength = stringToAppend.Length
    

答案 1 :(得分:0)

您可能还想查看来自vbAccelerator.com的this,它是VB.NET中自动完成的基本起点。 vbAccelerator代码通常是高质量的。