.NET Framework 3.5 を対象とする Visual Studio 2010 で VB.NET を使用しています。
私たちの (かなり大きな) クライアント アプリケーションでは、1 つのフォーム ( Windows Forms ) に問題があります。.ShowDialog で表示されます (.ShowDialog で表示されるフォームはこれだけではありません)。フォームには [閉じる] ボタンと [キャンセル] ボタンがあり、Enter キーと Escape キーはそれぞれこれらのコントロールに関連付けられています (他のフォームでも同様です)。ボタン内のコードは、Hide メソッド呼び出しを実行してフォームを非表示にします (実際には、後でビジネス プロセス ロジックでアンロードされます)。これを別のフォームで実行します。
[閉じる] または [キャンセル] ボタンをクリックすると、必要に応じて機能します。キーを押してEnterも、必要に応じて機能します (閉じるクリックが実行されます)。しかし、Escape キーが押されると、最初に [キャンセル] ボタンのロジックが期待どおりに実行されますが、その後 Form Closed イベントを受け取り、フォームがアンロードされます!
Escape キーを探してフォーム上で Close を実行するコードは他にありません。Closing イベントで Cancel 引数を設定しようとしましたが、役に立ちませんでした。フォームはまだアンロードされています。また、[キャンセル] ボタンから Escape キーを切り離し、Escape を押してもキャンセル コードは実行されませんが (予想どおり)、Form Closed イベントは引き続き発生します。
テスト プログラムでこの動作を再現できていないため、残念ながら、動作する (実際には動作しない) コード例を投稿できません。
何が起こっているかについての情報はありますか?Escape キーでフォームが閉じられるのはなぜですか?
おそらく最も重要なのは、これをさらに調査して理解するために何をする必要があるかということです。