繁体   English   中英

如何通过子控件事件更改父控件的内容?

[英]How can I change parent control's content though child control event?

我有三个用户控件。 ControlC是ControlB的父级,ControlB是ControlA的父级。现在,我想使用ControlA的事件来更改ControlC的内容(假设将ControlC的内容更改为ControlD)。 如果只有2个控件,我可以这样做,但我不知道要使用3个控件。 有什么想法吗? 对于2个控件的解决方案是:

        private void ChangeParentContent()
    {
        UserControlB userControlB = (UserControlB)this.Parent;
        userControlB.Content = new userControlC();
    }

编辑

在重新阅读了几次您的问题之后,我想我会更好地了解您要做什么。 @Servy是正确的,您不应从子级修改父级。 而是创建父母可以订阅的事件。 触发事件后,您可以在父级中处理事件。 我的原始答案(如下)提供了一些可用于实现此目的的路径。

原版的

一些想法:

  1. ControlB可以订阅ControlA事件。 然后,ControlB触发其自己的事件,ControlC订阅了该事件。
  2. 将ControlA的Modifier更改为public以便您可以直接从ControlC( ControlB.ControlA.Event += ... )访问它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM