【问题标题】:ComboBox that remembers recently entered values and can autocomplete记住最近输入的值并可以自动完成的组合框
【发布时间】:2009-04-04 03:22:10
【问题描述】:

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

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

【问题讨论】:

  • 组合框??我看不出它是如何工作的......我可以用文本框来描绘它

标签: vb.net combobox autocomplete


【解决方案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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-10-04
      • 1970-01-01
      • 2012-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      相关资源
      最近更新 更多