Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态加载UserControl,单击父页面上的按钮,需要激发相应的UserControls方法_C#_Asp.net_User Controls_Event Handling - Fatal编程技术网

C# 动态加载UserControl,单击父页面上的按钮,需要激发相应的UserControls方法

C# 动态加载UserControl,单击父页面上的按钮,需要激发相应的UserControls方法,c#,asp.net,user-controls,event-handling,C#,Asp.net,User Controls,Event Handling,我有pageParentPage.aspx和两个用户控件(control1.ascx和control2.ascx) 在加载页面时,我根据条件动态添加了一个用户控件,现在这个父页面也有一个位于占位符(保存用户控件)之外的On按钮,单击say(btnNext按钮,我想调用相应的用户控件方法 是否可以在父页面的事件上调用usercontrol的方法 我正试图为这个问题做以下工作 1.两个用户控件都将实现包含动作方法的sayIActionmethodos。 2.页面将具有IAction类型的属性,其ge

我有page
ParentPage.aspx
和两个用户控件(
control1.ascx
control2.ascx

在加载页面时,我根据条件动态添加了一个用户控件,现在这个父页面也有一个位于占位符(保存用户控件)之外的On按钮,单击say(
btnNext
按钮,我想调用相应的用户控件方法

是否可以在父页面的事件上调用usercontrol的方法

我正试图为这个问题做以下工作 1.两个用户控件都将实现包含动作方法的say
IAction
methodos。 2.页面将具有IAction类型的属性,其getter将返回相应的UserControl,并且在此IAction属性上(在该UserControl上我将调用Action方法)

但我想将这个ParentPage与UserControl解耦,为此我想使用Event,但不知道如何做到这一点


提供的所有google链接都显示了如何在单击Usercontrol事件时调用父页面方法,反之亦然。

如果您像下面这样动态加载Usercontrol。您可以在类级别声明Usercontrol,并通过类访问它

父页面:

public partial class ParentPage: System.Web.UI.Page
{
  private  Control ucUserControl;
  protected void Page_Load(object sender, System.EventArgs e)
  {
    ucUserControl =(Control)Page.LoadControl("control1.ascx");
    placeholder.Controls.Add(ucUserControl);

   }
   //button click event 
   protected void button_Click(object sender, EventArgs e)
   {
     ucUserControl.ActionMethod();
   }
}

是的,这是可能的,我认为您应该仔细阅读如何在用户控件内调用方法。此外,如果您不熟悉
委托
,我会快速阅读如何使用它们以及在用户控件内创建它们。正如MethodMan所说,您可以这样做,但这是一个坏主意。最简单的方法是将代码从ev中删除ent处理程序并将其放入公共方法中,然后将事件处理程序连接到该方法。然后您可以根据需要调用它。您能否实际演示一下,我尝试将父页面的事件注册到UserControl中,但由于我动态加载控件,我不了解如何处理它,任何链接或任何示例代码都将受到欢迎正确理解您正在尝试访问父页面中的Usercontrol方法。下面是一个简单的方法:设置ID=“”属性设置为页面上的usercontrol,您可以使用该属性从页面中引用它。页面代码如下所示:
,然后您可以在父级按钮单击事件
ucControl1.ActionMethod()
谢谢Prasy,谢谢你的时间。实际上问题是我正在动态加载控件,所以下一步单击“我不知道加载了哪个控件”,以便在Regalar中调用其方法(其ID.Methodname()格式)