当表单中的任何子项发生更改(被绘制)时触发事件?

时间:2012-04-05 08:31:38

标签: c# winforms compact-framework

我对C#,Winforms和Compact Framework很陌生,但仍然没有完全理解它的事件系统。

我正在寻找一种方法来将单个事件处理程序添加到我的最顶层表单中,当任何子项被(重新)绘制时(甚至更好,在绘制它们之后)调用它,无论它们是什么类型是。同样重要的是,我不需要为孩子们​​自己添加任何代码。

在伪代码中它可能看起来像这样

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

有没有办法做到这一点?

1 个答案:

答案 0 :(得分: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();
}

请注意,每个孩子都指向这一个处理程序。