Как перенаправить EventHandler на родительский контроль?

У меня есть пользовательский элемент управления, содержащий текстовое поле. Сам пользовательский элемент управления содержится в другом пользовательском элементе управления (родительском).

Когда текст изменен (событие OnTextChanged), мне нужен способ сообщить родительскому элементу управления.

Итак, у меня было бы что-то вроде:

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

и обработчик событий OnChanged будет срабатывать, когда срабатывает событие OnTextBoxChanged текстового поля.

Любая идея или подсказка?

Спасибо!


person teebot    schedule 11.06.2009    source источник


Ответы (1)


Предполагая текстовое поле с именем ControlTextBox, у меня есть следующий код за моим пользовательским веб-элементом управления:

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"/>

Тогда код, который вы указали выше, запускается правильно.

person samjudson    schedule 11.06.2009