1

VB.NET でデスクトップ検索エンジンを開発しています。ComboBox を使用して検索クエリ (文字列) を指定しています。ComboBox に最近のクエリを記憶させて表示させたい。また、ユーザーが入力しているときに ComboBox がクエリをオートコンプリートしようとすることも必要です。

これを実装する最良の方法は何ですか?

4

2 に答える 2

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
    

これにより、ユーザーが入力したすべてが上書きされることに注意してください (大文字と小文字を区別しません)。代わりに「欠落」部分を追加することでこれを改善できます。

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

VB.NET でのオートコンプリートの基本的な開始点として提供されている vbAccelerator.com からこれを参照することもできます。通常、vbAccelerator コードは高品質です。

于 2009-04-03T19:22:10.593 に答える