如何将单个UserControl添加到baseform但在继承页面中为同一事件使用不同的事件处理程序?

时间:2010-07-12 06:05:18

标签: asp.net delegates override

这是我的应用程序设置:

我的应用程序中有一个UserControls文件夹,里面有我的.ascx文件,它很高兴只包含一个简单的ASP按钮。我没有在ascx的代码隐藏中添加任何代码。

我有一个BaseForm.cs(只是一个C#类文件,而不是一个aspx文件),它继承自System.Web.UI.Page

public class BaseForm : System.Web.UI.Page {
    protected override void OnInit(EventArgs e)
    {
        UserControls.UserButton1 ObjUserControls=(UserControls.UserButton1)LoadControl("~/UserControls/UserButton1.ascx");
        ObjUserControls.ID = "UserControl1";
        this.Form.Controls.Add(ObjUserControls);
        base.OnInit(e);
    }
}

现在我将拥有ASPX页面,例如:ChildPage1.aspx和ChildPage2.aspx,它们将继承自baseform而不是System.Web.UI.Page(显然)。

我想知道的是,如何在属于UserControl的事件的每个ChildPage中编写不同的实现。也就是说,例如,我想为ChildPage1.aspx中的Button Click事件执行ChildPage1ClickEventHandler,为ChildPage2.aspx中的Button Click事件执行ChildPage2ClickEventHandler

我该如何解决这个问题?请帮忙。

1 个答案:

答案 0 :(得分:0)

哈,这是我的另一个未解决的问题。

这是前一段时间,虽然我不完全记住这个场景,但我知道那天我在寻找什么。

正如我稍后想到的那样,您需要做的是公开事件(单击或该用户控件的任何事件),然后在子页面中将事件处理程序附加到它。

另一种方法是使用我认为的委托(将用户控件点击事件处理从用户控件委托给你想要处理它的子页面)