Как переслать EventHandler на родительский контроль? - PullRequest
1 голос
/ 11 июня 2009

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

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

Так что я хотел бы что-то вроде:

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

и обработчик события OnChanged сработает при возникновении события OnTextBoxChanged в текстовом поле.

Есть идеи или подсказки?

Спасибо!

1 Ответ

1 голос
/ 11 июня 2009

Предполагая текстовое поле с именем 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"/>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...