Vb.net 可记住最近输入的值并可自动完成的组合框

Vb.net 可记住最近输入的值并可自动完成的组合框,vb.net,combobox,autocomplete,Vb.net,Combobox,Autocomplete,我正在用VB.NET开发一个桌面搜索引擎 我使用一个组合框来指定搜索查询(字符串)。 我希望组合框能够记住并显示最近的查询。 我还希望ComboBox在用户键入时尝试自动完成查询 实现这一点的最佳方法是什么?这无疑可以做得更优雅,但以下是基本原则(对于任何语法问题,我深表歉意,我不是一个VB高手): 在KeyUp事件中: 确保钥匙不是导航钥匙: if e.KeyCode <> Keys.Back [...] 如果e.KeyCode Keys.Back[…] 在“项目”列表中搜索键入的文本

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


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

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

在KeyUp事件中:

  • 确保钥匙不是导航钥匙: if e.KeyCode <> Keys.Back [...] 如果e.KeyCode Keys.Back[…]
  • 在“项目”列表中搜索键入的文本: idx = myCombo.FindString(myCombo.Text) idx=myCombo.FindString(myCombo.Text)
  • 获取组合的已找到项: s = myCombo.GetItemText(idx) s=myCombo.GetItemText(idx)
  • 将其插入.Text属性: myCombo.Text = s myCombo.Text=s
  • 请注意,这将改写用户输入的所有内容(销毁案例)。您可以通过添加“缺失”部分来改进这一点: stringToAppend = s.SubString(myCombo.Text.Length) myCombo.Text = myCombo.Text + stringToAppend stringToAppend=s.SubString(myCombo.Text.Length) myCombo.Text=myCombo.Text+stringToAppend

    最后,选择新文本,以便他们可以继续键入: myCombo.SelectionStart = myCombo.Text.Length - stringToAppend.Length myCombo.SelectionLength = stringToAppend.Length myCombo.SelectionStart=myCombo.Text.Length-stringToAppend.Length myCombo.SelectionLength=stringToAppend.Length
    毫无疑问,这可以做得更优雅,但以下是基本原则(对于任何语法问题,我深表歉意,我不是一个VB高手):

    在KeyUp事件中:

  • 确保钥匙不是导航钥匙: if e.KeyCode <> Keys.Back [...] 如果e.KeyCode Keys.Back[…]
  • 在“项目”列表中搜索键入的文本: idx = myCombo.FindString(myCombo.Text) idx=myCombo.FindString(myCombo.Text)
  • 获取组合的已找到项: s = myCombo.GetItemText(idx) s=myCombo.GetItemText(idx)
  • 将其插入.Text属性: myCombo.Text = s myCombo.Text=s
  • 请注意,这将改写用户输入的所有内容(销毁案例)。您可以通过添加“缺失”部分来改进这一点: stringToAppend = s.SubString(myCombo.Text.Length) myCombo.Text = myCombo.Text + stringToAppend stringToAppend=s.SubString(myCombo.Text.Length) myCombo.Text=myCombo.Text+stringToAppend

    最后,选择新文本,以便他们可以继续键入: myCombo.SelectionStart = myCombo.Text.Length - stringToAppend.Length myCombo.SelectionLength = stringToAppend.Length myCombo.SelectionStart=myCombo.Text.Length-stringToAppend.Length myCombo.SelectionLength=stringToAppend.Length

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

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

    ComboBox??我看不出会有什么效果。。。我可以用TextboxComboBox来描绘它??我看不出会有什么效果。。。我可以用一个文本框来描绘它