1

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

实现这一点的最佳方法是什么?

4

2 回答 2

1

毫无疑问,这可以做得更优雅,但这是基本原则(对任何语法问题表示歉意,我不是一个 VB 人):

在 KeyUp 事件中:

  1. 确保键不是导航键:
    如果 e.KeyCode <> Keys.Back [...]
    
  2. 在项目列表中搜索键入的文本:
    idx = myCombo.FindString(myCombo.Text)
    
  3. 拿组合的找到的项目:
    s = myCombo.GetItemText(idx) 
    
  4. 将其插入 .Text 属性:
    myCombo.Text = s
    

请注意,这将覆盖用户输入的所有内容(破坏案例)。您可以通过附加“缺失”部分来改进这一点:

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

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

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

于 2009-01-22T16:08:32.063 回答
0

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

于 2009-04-03T19:22:10.593 回答