3

次の動作で、Firefox 3 Awesomebar のように動作するコンボ ボックスを作成しようとしています。

  1. テキストを入力
  2. 結果を非同期に戻す
  3. リスト内の結果を上下に選択しますが、入力ボックスに入力されたテキストが残るため、ユーザーは編集を続けて結果セットを別の方法で制限できます
  4. Enter は、親フォームが処理するイベントを発生させます

非同期の結果とフィルタリングはすべて機能していますが、結果を表示して選択するための適切な方法がありません。

コンボ ボックスでは、矢印を下に移動すると、選択した内容がエントリ ボックスに自動的に入力されます。#3 に失敗します。

私は DevExpress コントロールを持っていますが、それらのコンボ ボックスは同じことを行い、どちらもオーバーライドする方法がわかりません。

LookupEdit では、任意のものを入力することはできません。PopupContainerEdit も同様です。

その下にリストボックスがあるテキストボックスのような動作が必要で、テキストボックス内のアップ/ダウンイベントがリストボックスに渡されます。しかし、そのような 2 つを組み合わせたカスタム コントロールを作成しようとすると、通常のコンボ ボックスのドロップダウンのようにリスト ボックスを「フローティング」する方法がわかりません。

手がかりは大歓迎です!

4

2 に答える 2

3

矢印キーを使用するとコンボリストから値が選択され、現在の値が上書きされるため、コンボボックスの代わりにテキストボックスを使用する必要がある場合があります。テキストボックスを使用すると、TextChangedイベントを検索でき、KeyPressイベントをオーバーライドしてユーザーが入力したキーを収集して保存することにより、現在入力されている値を保存できます。
値のポップアップリストは、paintイベントで自己描画する必要があります。

これは非常に複雑に見えるかもしれませんが、おそらくコンボコントロールを削除し、その機能の一部を自分で実装する必要があります。

于 2008-10-21T21:59:44.477 に答える
3

Skyboundのオートコンプリートコントロールを使用しています。それは無料です。Awesomebarからの動作を近似できるように、カスタマイズすることができます。

http://dev.skybound.ca/Products/AutoComplete/

于 2008-10-21T22:06:27.647 に答える