我正在 VB.NET 中开发桌面搜索引擎我正在使用 ComboBox 来指定搜索查询(字符串)。我希望 ComboBox 记住并显示最近的查询。我还希望 ComboBox 在用户键入时尝试自动完成查询。
实现这一点的最佳方法是什么?
我正在 VB.NET 中开发桌面搜索引擎我正在使用 ComboBox 来指定搜索查询(字符串)。我希望 ComboBox 记住并显示最近的查询。我还希望 ComboBox 在用户键入时尝试自动完成查询。
实现这一点的最佳方法是什么?
毫无疑问,这可以做得更优雅,但这是基本原则(对任何语法问题表示歉意,我不是一个 VB 人):
在 KeyUp 事件中:
如果 e.KeyCode <> Keys.Back [...]
idx = myCombo.FindString(myCombo.Text)
s = myCombo.GetItemText(idx)
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
您可能还想从 vbAccelerator.com中查看此内容,它是 VB.NET 中自动完成的基本起点。vbAccelerator 代码通常质量很高。