ListBox
2 つのアプリケーションの WinForms で非常に奇妙な動作が発生しています。どちらにも他のコントロールがあります ( TableLayoutPanel
、Button
など)。
どちらのアプリケーションも、Ctrl+C キーストロークを処理して、選択したアイテムListBox
をクリップボードにコピーします。ただし、Ctrl+C を押すと、現在の選択されたインデックスがListBox
1 つ下に移動するか、最後の項目が選択されている場合は、選択が最初の項目に戻ります。これは、ハンドラーが作業を行った後に発生します。KeyDown
どちらのアプリケーションにもこの動作を引き起こすコードがないため、これは非常に奇妙です。選択を進めたり、そのように折り返したりするためにどのキーを押すべきかさえわかりません。
サンプル プログラムでこの動作を再現しようとしてきましたが、これまでのところ、これら 2 つのアプリケーションがこのように動作する共通点は何かを突き止めることができませんでした。私がそれを理解したら、それに応じてこの質問を更新します。
この問題があるアプリケーションとないアプリケーションの Windows メッセージ アクティビティを比較しました。それを引き起こしている特定のメッセージが1つ見つかりました:
msg=0x2111 (WM_REFLECT + WM_COMMAND)
hwnd=0x211e2
wparam=0x111e2
lparam=0x211e2
result=0x0
以下は、各プログラムで Ctrl+C を押したときの完全なメッセージ ログです。
- この問題に関するメッセージ ログ: https://gist.github.com/2854221
- この問題のないメッセージ ログ: https://gist.github.com/2854203
この謎のメッセージが処理されないようにすることはできますが、それは何ですか? また、送信される原因は何ですか? 私は困惑しています。