VB.NET でデスクトップ検索エンジンを開発しています。ComboBox を使用して検索クエリ (文字列) を指定しています。ComboBox に最近のクエリを記憶させて表示させたい。また、ユーザーが入力しているときに ComboBox がクエリをオートコンプリートしようとすることも必要です。
これを実装する最良の方法は何ですか?
VB.NET でデスクトップ検索エンジンを開発しています。ComboBox を使用して検索クエリ (文字列) を指定しています。ComboBox に最近のクエリを記憶させて表示させたい。また、ユーザーが入力しているときに ComboBox がクエリをオートコンプリートしようとすることも必要です。
これを実装する最良の方法は何ですか?
これは間違いなくもっとエレガントに行うことができますが、基本的な原則は次のとおりです (構文の問題についてはお詫びします。私は VB の専門家ではありません)。
KeyUp イベントで:
if 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
VB.NET でのオートコンプリートの基本的な開始点として提供されている vbAccelerator.com からこれを参照することもできます。通常、vbAccelerator コードは高品質です。