これはC# - WinFormに関する質問です。 私はlistBoxで検索しようとしています。リストボックスにはいくつかのアイテムがあります。プログラムのロード時に、listBox内のすべての項目が、 'tempList'というタイプの文字列のリストにコピーされます。 TextBoxもあります。ユーザーがTextBoxの入力を開始すると、listBoxはClear()メソッドを使用してクリアされます。その後、テキストボックス内の単語は、foreachブロックを使用してtempList内で検索されます。すべての一致がlistBoxに追加され、ユーザーに表示されます。 私はこのコードを思い付いた:listBoxでbackgroundWorkerを使って検索する
private void textBox1_TextChanged(object sender, EventArgs e)
{
listBox1.Items.Clear();
foreach (string item in tempList)
{
if (item.ToLower().Contains(textBox1.Text.ToLower()))
{
listBox1.Items.Add(item);
}
}
}
問題は、ユーザーが最初の文字で、テキストボックスに入力し始めると、UIが破断し、ユーザーがそのために検索されるまで待たなければならないこと、です1文字が終了した後、再度入力することができ、これはすべての文字で発生します。これを解決するために、私はbackgroundWorkerを使うことができると考えました。しかし、私はこのシナリオのためにそれを使用する方法を理解していません。役に立ったことは何でも感謝します。
異なるインターフェイスでオートコンプリート機能を複製しようとしているようです。なぜ、既に組み込まれているUI機能を使用しないのですか? – Steve
私はオートコンプリートが、ユーザーが入力してテキストボックスの内容に追加する際に単語を示唆していると思いますか?それは私の意図ではありません。私は特に、テキストボックスに入力された単語をlistBoxで検索しようとしています。 – arm
ユーザーがテキストボックスを離れるか、または「Enter」を押した後で検索を開始する必要があります。 – Fabio