WindowsフォームでのAwesomebarのような動作
-
03-07-2019 - |
質問
Firefox 3 Awesomebarのように動作するコンボボックスを作成しようとしていますが、次の動作があります:
- テキストを入力
- 非同期で結果を戻す
- リスト内の結果を上下に選択すると、 BUT は入力ボックスに入力されたテキストを残すため、ユーザーは結果セットを異なる方法で制限するために編集を続けることができます
- Enterは、親フォームが処理するイベントを発生させます
非同期の結果とフィルタリングはすべて機能していますが、結果内で表示および選択するための良い方法がありません。
コンボボックスは、下向き矢印を押すと選択されたもので自動的に入力ボックスを埋めます。 #3に失敗します。
DevExpressコントロールはありますが、それらのコンボボックスは同じことを行うため、どちらをオーバーライドするかわかりません。
LookupEditは、任意のものの入力を許可しません。 PopupContainerEditも同様です。
リストボックスが下にあるテキストボックスのような動作が必要で、テキストボックス内のup / downイベントがリストボックスに渡されます。しかし、そのような2つを組み合わせたカスタムコントロールを作成しようとすると、「フロート」する方法がわかりません。通常のコンボボックスのドロップダウンのようなリストボックス。
手がかりは大歓迎です!
解決
矢印キーを使用するとコンボリストから値が選択され、現在の値が上書きされるため、コンボボックスの代わりにテキストボックスを使用する必要がある場合があります。テキストボックスを使用すると、TextChangedイベントを検索できます。また、KeyPressイベントをオーバーライドして、ユーザーが入力したキーを収集して保存することにより、現在入力されている値を保存できます。
値のポップアップリストは、ペイントイベントで自己描画する必要があります。
これは非常に複雑に思えるかもしれませんが、おそらくコンボコントロールを削除して、その機能の一部を自分で実装する必要があります。
他のヒント
Skyboundのオートコンプリートコントロールを使用しています。それは無料です。カスタマイズして、Awesomebarの動作に近づけることができます。