2012-04-05 4 views
0

Ich bin ziemlich neu in C#, Winforms und dem Compact Framework und habe mich immer noch nicht komplett um das Event-System gekümmert.Ereignis ausgelöst, wenn sich ein Kind in einem Formular ändert (wird gemalt)?

Ich bin auf der Suche nach einer Möglichkeit, einen einzigen Event-Handler zu meinem obersten Formular hinzuzufügen, das aufgerufen wird, wenn eines der Childs (neu) gezeichnet wird (oder noch besser, nachdem sie gezeichnet wurden), egal welchen Typ Sie sind. Es ist auch wichtig, dass ich den Kindern selbst keinen Code hinzufügen muss.

In Pseudo-Code würde es so

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

Gibt es eine Möglichkeit, dies zu tun aussehen könnte?

+0

Die Vergangenheitsform "war" ist ein Problem. Sicherlich gibt es einen besseren Weg, um zu erreichen, was Sie wollen, es ist einfach nicht klar, warum Sie wollen, was Sie wollen. –

+0

Die meisten .NET Compact Framework-Steuerelemente feuern keine Paint-Ereignisse. Wenn Sie das * wirklich * brauchen, dann müssen Sie etwas wie OpenNetCF verwenden, um in die Nachrichtenschleife zu tippen, die ich denke. – tcarvin

Antwort

1

Schauen Sie in den Umgang mit dem Paint-Handler Ihrer Kinder. Zum Beispiel in der obersten Formular Sie würde so etwas wie tun:

// 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 

Der eigentliche Handler selbst etwas würde wie folgt aussehen:

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

Beachten Sie, dass jedes Kind zeigt auf diesen einen Handler.