如何将EventHandler转发到父控件?

时间:2009-06-11 09:44:01

标签: c# asp.net event-handling

我有一个包含文本框的用户控件。用户控件本身包含在另一个用户控件(父级)中。

当文本被更改时(OnTextChanged事件)我需要一种方法来告诉父用户控件。

所以我会有以下几点:

<uc1:MyUserControl OnChanged="DoSomething" runat="server" ID="MyUserControl1">

并且当文本框的OnTextBoxChanged事件触发时,OnChanged事件处理程序将触发。

任何想法或线索?

谢谢!

1 个答案:

答案 0 :(得分:1)

假设一个名为ControlTextBox的文本框,我的Web用户控件后面有以下代码:

public partial class MyUserControl : System.Web.UI.UserControl
{
    public event EventHandler Changed;

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void ControlTextBox_Changed(object sender, EventArgs e)
    {
        OnChanged();
    }

    protected virtual void OnChanged()
    {
        if (Changed != null)
            Changed(this, EventArgs.Empty);
    }
}

以及ascx文件中的以下内容:

<%@ Control Language="C#" AutoEventWireup="true" 
    CodeFile="MyUserControl.ascx.cs" Inherits="MyUserControl" %>

<asp:TextBox runat="server" ID="ControlTextBox" 
    OnTextChanged="ControlTextBox_Changed" AutoPostBack="true"/>

然后你上面给出的代码会被正确解雇。