0

私はC#、Winforms、およびCompact Frameworkにかなり慣れていませんが、それでもイベントシステムに完全に頭を悩ませることはありませんでした。

一番上のフォームに単一のイベントハンドラーを追加する方法を探しています。これは、子のタイプに関係なく、子のいずれかが(再)描画されたとき(または描画された後はさらに良い)に呼び出されます。また、子供たち自身にコードを追加する必要がないことも重要です。

擬似コードでは、次のようになります。

TopMostForm {
    anyChildWasReDrawn() {
      dostuff();
    }
}

これを行う方法はありますか?

4

1 に答える 1

1

子の Paint ハンドラーの処理を検討してください。たとえば、一番上のフォームでは、次のようにします。

// each child will call the same method when any of them are redrawn
myChild1.Paint += myChildren_Paint;
myChild2.Paint += myChildren_Paint;
mySomeOtherChild.Paint += myChildren_Paint

実際のハンドラー自体は次のようになります。

void myChildren_Paint(object sender, PaintEventArgs e)
{
    dostuff();
}

各子は、この 1 つのハンドラーを指すことに注意してください。

于 2012-04-05T18:48:34.633 に答える