C# 在C中从子控件调用父页方法#

C# 在C中从子控件调用父页方法#,c#,C#,我有一个子UserControl,它被动态加载到父页面中 ChildControl childcontrol = this.LoadControl("") as ChildControl; 我必须从这个childUserControl调用父页面中的一个方法。我们怎么做 谢谢将控件的父控件强制转换为页面的特定类型,然后调用方法。将控件的父控件强制转换为页面的特定类型,然后调用方法。您不应该编写依赖于页面上某个方法的控件,因此,最好的做法是公开和处理来自子控件的事件。将以下内容添加到子控件: pu

我有一个子UserControl,它被动态加载到父页面中

ChildControl childcontrol = this.LoadControl("") as ChildControl;
我必须从这个childUserControl调用父页面中的一个方法。我们怎么做


谢谢

将控件的父控件强制转换为页面的特定类型,然后调用方法。

将控件的父控件强制转换为页面的特定类型,然后调用方法。

您不应该编写依赖于页面上某个方法的控件,因此,最好的做法是公开和处理来自子控件的事件。将以下内容添加到子控件:

public event OnSomethingHandler Something;
public delegate void OnSomethingHandler(ChildControl sender);
然后,当您想要触发有问题的page方法时,触发事件:

public void FireParentMethod()
{
    if (Something != null)
    {
        Something(this);
    }
}
您只需处理页面上的事件(在标记或代码中,如下所示):

并将处理程序添加到代码隐藏中:

protected void ChildControl_OnSomething(ChildControl sender)
{
    FirePageMethod();
}

您不应该编写依赖于页面上的方法的控件,因此最好的做法是公开和处理来自子控件的事件。将以下内容添加到子控件:

public event OnSomethingHandler Something;
public delegate void OnSomethingHandler(ChildControl sender);
然后,当您想要触发有问题的page方法时,触发事件:

public void FireParentMethod()
{
    if (Something != null)
    {
        Something(this);
    }
}
您只需处理页面上的事件(在标记或代码中,如下所示):

并将处理程序添加到代码隐藏中:

protected void ChildControl_OnSomething(ChildControl sender)
{
    FirePageMethod();
}

ASP.Net我会从
LoadControl
Page
猜。ASP.Net我会从
LoadControl
Page
猜。是的,肯定是这样做的。但是,从技术上讲,你可以按照OP的要求去做。:)@埃斯特班·阿拉亚——你已经给出了答案:)所以我复制它没有意义。但我宁愿给出一个鼓励良好实践的答案,与制动基本设计规则相对应。是的,绝对是这样做的。但是,从技术上讲,你可以按照OP的要求去做。:)@埃斯特班·阿拉亚——你已经给出了答案:)所以我复制它没有意义。但我宁愿给出一个鼓励良好实践的答案,以符合制动基本设计规则。