2017-08-04 13 views
2

ListView私はその上に他のコントロールを表示しています。コントロールの1つをクリックしてアクションを起こすとキャプチャできます。私が望むのは、その下のListViewにクリック通知を送信して、ListViewがクリックされたかのように動作するようにすることです。クリックが発生したListViewの項目を選択/選択解除します。手動で項目を選択/選択解除するのではなく、マルチセレクションリストであるかどうか、押されているキー、クリックされていない項目などを調べる必要がないため、ListViewにクリックメッセージを送信したい選択または未選択のままにする必要があります...理想的には、ListViewにクリック通知を送信し、クリックされたかのようにすべての適切な処理を行います。プログラムでListViewにメッセージを送信して、アイテムを選択/選択解除します

私はuser32.dllからSendMessageを呼び出すと周り果たしている - WM_NOTIFYOCM_NOTIFY両方NMITEMACTIVATE構造体でlParamとして。私はそれが動作するように感じることはできません。私も運がないOnNotifyMessageコールで遊んでいます。

私は正常にリストビューの上にコントロールからのキャプチャをキャプチャすることができます、カーソル位置を取得し、その下のListViewのアイテム/サブアイテムに変換...私はちょうど見ることができませんListViewに送信する必要のある通知をプログラムで送信して適切な処置を講じます。

EDIT:

下のリンクで可能な解決策は、クリックがそれ以下のリストビューにコントロールを通過することができますが、あなたはすべてのコントロールのためのカスタムクラスを作成する必要がありますし、あなたが任意のクリックを処理する能力を失います上のコントロールのイベント。

+0

あなたが必要とするものを過度に複雑にしているようです。 * "私はそれが複数選択リストであるかどうかを調べる必要はありません。" * - これは1ライナーです –

+0

複数選択リストで、クリックイベントをリストに送信すると、 ctrlボタンが押されていないときは、1つの項目だけを選択するように動作するはずです。言い換えれば、手作業を選択/選択解除したときに発生する追加の複雑さはわかりません。 –

+0

ListViewが行うロジックを試してシミュレートするのはかなり複雑です。 1)マルチセレクション、2)Ctrlキー、3)シフトキー、(最後に選択されたアイテムがあれば)5)現在選択されているアイテムそうでない場合は、これらの変数のすべての組み合わせに基づいて、選択と選択解除をプログラムする必要があります。メッセージをListViewに送信し、それを行います – jrhoads23

答えて

2

ListView上にあるコントロールを拡張し、そのイベントの1つをオーバーライドするクラスを作成する必要があります。あなたに役立つはずの質問と同様の質問があります。 https://stackoverflow.com/a/8635626/3508142

+0

ありがとうございました。それは私を近づけます。このリンクは、カスタムLabelクラスを配置する方法の例を示し、クリックビューをリストビューに渡します。しかし、1)この機能を持たせたいすべてのオブジェクト用のカスタムクラスを作成する必要があります(大したことではありません)。2)これらのクラスでOnClick機能を使用することはできません。理想的には、Label(またはそれが何であれ)のOnClickを処理し、その下のListViewにメッセージを送信することができます – jrhoads23

関連する問題