gpt4 book ai didi

c# - 如何通知子控件父控件发生变化

转载 作者:太空狗 更新时间:2023-10-30 00:46:38 24 4
gpt4 key购买 nike

什么是让子控件与父控件保持同步的最佳方法。

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

1) 将子控件连接到父控件中的事件,并在父控件发生更改时触发该事件

2) 在一个数组中保留一个子项列表,并在发生更改时遍历该数组,并在子项中调用一个方法来处理新的更改。

我希望我描述的没问题。

两者都有效,但可能有正确的方法和错误的方法。

编辑:下面是我的代码...事件方法。我对将 child 连接到 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 );

}
}

child ...

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) { }

}

最佳答案

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

更新

逆向事件方法是虚伪的。人们说 parent 清楚地知道 child 对他们感兴趣的是什么,我只是不同意这种说法。我的设计通常让 children 对 parent 产生动态兴趣,而 children 订阅事件通常是最有利的方式。

您可以在 .NET 模型中找到此类示例,例如具有您可以绑定(bind)到的事件的页面。

关于c# - 如何通知子控件父控件发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com