1

ListBox2 つのアプリケーションの WinForms で非常に奇妙な動作が発生しています。どちらにも他のコントロールがあります ( TableLayoutPanelButtonなど)。

どちらのアプリケーションも、Ctrl+C キーストロークを処理して、選択したアイテムListBoxをクリップボードにコピーします。ただし、Ctrl+C を押すと、現在の選択されたインデックスがListBox1 つ下に移動するか、最後の項目が選択されている場合は、選択が最初の項目に戻ります。これは、ハンドラーが作業を行った後に発生します。KeyDown

どちらのアプリケーションにもこの動作を引き起こすコードがないため、これは非常に奇妙です。選択を進めたり、そのように折り返したりするためにどのキーを押すべきかさえわかりません。

サンプル プログラムでこの動作を再現しようとしてきましたが、これまでのところ、これら 2 つのアプリケーションがこのように動作する共通点は何かを突き止めることができませんでした。私がそれを理解したら、それに応じてこの質問を更新します。

この問題があるアプリケーションとないアプリケーションの Windows メッセージ アクティビティを比較しました。それを引き起こしている特定のメッセージが1つ見つかりました:

msg=0x2111 (WM_REFLECT + WM_COMMAND)
hwnd=0x211e2
wparam=0x111e2
lparam=0x211e2
result=0x0

以下は、各プログラムで Ctrl+C を押したときの完全なメッセージ ログです。

この謎のメッセージが処理されないようにすることはできますが、それは何ですか? また、送信される原因は何ですか? 私は困惑しています。

4

1 に答える 1

-2

リストボックスはキーの押下を管理するため、新しく選択された項目が「c」で始まる場合

于 2013-03-20T17:53:15.483 に答える