如何通知子控件父级更改

fis*_*ead 4 c#

什么是让孩子控制更新父母更新的最佳方法.

我在父对象中托管了许多子控件,我可以想到两种方法来向它们发送更改信息.

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)

Jus*_*ren 5

您的#1解决方案是最好的选择,因为它允许您在不更改父级的情况下更改您的实现.由于父母可能不关心它是否有孩子,因此基于事件的方法是理想的.

UPDATE

反向事件方法是不诚实的.人们说父母清楚地知道孩子们对他们感兴趣,我只是倾向于不同意这种说法.我的设计通常会让孩子们对父母产生动态的兴趣,订阅这些事件的孩子通常是最有利的方式.

您可以在.NET模型中找到这样的示例,例如包含可以绑定的事件的Page.