1

私が長い間知りたかったこと:

WinForms アプリケーションでは、元に戻すややり直しなどのエントリを含む編集メニューがよくあります。これらのメニュー エントリは、どのコントロールがフォーカスを持っているか、および元に戻すスタックの状態に応じて、有効または無効にする必要があります。この検証では、フォーカスがいつ変更されるかを知る必要があります。残念ながら、標準の C# WinForms アプリケーションでこれを実現する方法はないようです。これまでに行ったことは、各コントロールに OnEnter イベント ハンドラーを追加することでしたが、これは厄介であり、バックエンド コード (C++/CLI レイヤーなど) によって追加されたコントロールでは機能しません。もう 1 つの方法は、メッセージ フィルターを使用することですが、WM_FOCUS はそのようなフィルターを介して送信されません。仮想ではないため、ActiveControl の上書きも機能しません。では、フォーカスが変更されるたびにメニュー項目を検証するには、他に何ができるでしょうか?

注: http://msdn.microsoft.com/en-us/magazine/cc188928.aspxの記事を読みましたが、このような単純なタスクの場合、このアプローチは複雑です。すべての検証コードが既に配置されています。フォーカスが新しいコントロールに移動したときにのみトリガーする必要があります。

4

0 に答える 0