Quelle est la meilleure façon de garder un contrôle enfant à jour pour les changements dans le parent.comment informer les contrôles enfants d'un changement dans le parent
J'ai un certain nombre de contrôles enfants hébergés dans mon objet parent et je peux penser à deux façons de leur envoyer des informations de modification.
1) fil le contrôle enfant à un événement dans le parent et le feu de cet événement sur un changement du parent
2) tenir une liste des enfants dans un tableau et itérer à travers le réseau lorsque le changement a est arrivé et invoque une méthode dans l'enfant pour gérer les nouveaux changements.
J'espère que je le décris bien.
Les deux fonctionnent, mais il y a probablement une bonne façon de gérer cela et de la mauvaise façon.
EDIT: ci-dessous est mon code ... pour la méthode événementielle. Je ne suis pas content de la façon dont j'ai câblé l'enfant au parent, des sugestions.
Le parent ...
public class A_Parent
{
public delegate void DelUpdateMessage( string msg);
public event DelUpdateMessage UpdateMessage;
public A_Parent()
{
a_Child1.prnt = this;
a_Child2.prnt = this;
a_Child3.prnt = this;
a_Child4.prnt = this;
}
private void FireUpdateMessageEvent( string message)
{
var handlers = UpdateMessage;
if (handlers != null)
handlers( message);
}
}
L'enfant ...
public class A_Child
{
A_Parent pnt;
public A_Parent prnt
{
set
{
pnt = value;
pnt.UpdateMessage += new A_Parent.DelUpdateMessage(pnt_UpdateMessage);
}
}
void pnt_UpdateMessage(string msg) { }
}
merci pour cela ... J'apprécie le commentaire "événement inverse" – fishhead
Je suis d'accord. Puisque le parent sait quels enfants il a, il devrait simplement appeler des méthodes publiques sur ces enfants. –