什么是让孩子控制更新父母更新的最佳方法.
我在父对象中托管了许多子控件,我可以想到两种方法来向它们发送更改信息.
1)将子控件连接到父级中的事件,并在父级的更改中触发该事件
2)保留数组中的子列表,并在发生更改时遍历数组,并调用子进程中的方法来处理新的更改.
我希望我把它描述好.
两者都有效,但可能有正确的方法来处理这个错误的方法.
编辑:下面是我的代码...用于事件方法.我对孩子如何将孩子与家长联系起来感到不满意;任何sugestions.
父母......
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 );
}
}
Run Code Online (Sandbox Code Playgroud)
孩子......
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) { }
}
Run Code Online (Sandbox Code Playgroud)
您的#1解决方案是最好的选择,因为它允许您在不更改父级的情况下更改您的实现.由于父母可能不关心它是否有孩子,因此基于事件的方法是理想的.
UPDATE
反向事件方法是不诚实的.人们说父母清楚地知道孩子们对他们感兴趣,我只是倾向于不同意这种说法.我的设计通常会让孩子们对父母产生动态的兴趣,订阅这些事件的孩子通常是最有利的方式.
您可以在.NET模型中找到这样的示例,例如包含可以绑定的事件的Page.