0

コンボボックスに list の項目を入力し、コンボボックス内のTownListテキストでフィルタリングしますsearchString

List<Towns> towns = PIKBLL.TownList.FindAll(p => p.Name.Contains(searchString)); (sender as ComboBox).DataSource = towns;

そして、ユーザーがコンボでテキストを入力するたびにそれを行います。

また、同じイベント ハンドラーで、コンボ ボックスにドロップ ダウンを次のように表示するように指示しますcb.DroppedDown = true;

私は次のようなメソッドを呼び出そうとしました:

cb.PerformLayout();
cb.Refresh();
cb.Update();

私もこれを試しました:

if (towns.Count != 0)
{
    if (towns.Count * cb.ItemHeight < 300)
        cb.DropDownHeight = towns.Count * cb.ItemHeight;
     else
        cb.DropDownHeight = cb.ItemHeight * 15;
 }

私の質問は、このリストを非表示にして再度表示することなく、アイテムのリストを再計算して動的に再描画するようにコンボボックスに指示するにはどうすればよいですか?

4

3 に答える 3

0

ユーザーが searchString を入力している間に、開いている ComboBox を更新する必要があります。AutocompleteBox の使用を検討しましたか? それは同じことをします。

于 2013-06-19T13:43:53.370 に答える
0

通常の ComboBox を強制的にこの動作にする方法はないと思います。それを実装する独自の ComboBox を作成する必要があります。良い出発点は次の記事です。

ComboBox リスト コントロール ホスト

于 2013-06-19T13:42:54.790 に答える