c# - 如何通过子控件事件更改父控件的内容?
问题描述
我有三个用户控件。ControlC 是 ControlB 的父级,ControlB 是 ControlA 的父级。现在我想使用 ControlA 的事件来更改 ControlC 的内容(假设将 ControlC 的内容更改为 ControlD)。如果只有 2 个控件,我可以做到这一点,我不知道用 3 个控件来做到这一点。有什么想法吗?对于 2 控制解决方案是:
private void ChangeParentContent()
{
UserControlB userControlB = (UserControlB)this.Parent;
userControlB.Content = new userControlC();
}
解决方案
编辑
在重新阅读了你的问题几次之后,我想我更好地理解了你的目的。@Servy 是正确的,您不应该从孩子修改父母。相反,创建父母可以订阅的事件。当事件被触发时,您可以在父级中处理该事件。我的原始答案(如下)提供了几种可用于实现此目的的路径。
原来的
几个想法:
- ControlB 可以订阅 ControlA 事件。ControlB 然后触发它自己的事件,ControlC 订阅了该事件。
Modifier
将ControlA 的更改为,public
以便您可以直接从 ControlC (ControlB.ControlA.Event += ...
)访问它
推荐阅读
- javascript - 如何在 JavaScript/React 上向现有对象添加属性
- json - Flutter/Dart:JSON 解析
- ruby-on-rails - Rails 帮助 - 事件的未知属性“creator_id”
- visual-studio-code - 如何在 VS Code 中获取上一个终端?
- python - Tidyverse 在 Pandas 中的嵌套数据框工作流程
- c# - 使用接口来解析 MediatR IRequestHandler 而不是类
- javascript - React native navigation.navigate('login') 丢失了一些时间
- r - 在 macOS 上将 R GUI 窗口重置为默认大小
- android - Android:如何动态调整约束视图布局适用于孩子的大小
- python - 想要从 a 标签中抓取所有特定的 href