Обработка событий пользовательского контроля на странице содержания - PullRequest
6 голосов
/ 03 июня 2009

Я хочу, чтобы пользовательский элемент управления содержал кнопку сохранения.

Я хочу, чтобы событие щелчка, прикрепленное к кнопке сохранения, обрабатывалось страницей, в которой он находился, а не пользовательским управлением

Возможно ли это?

РЕДАКТИРОВАТЬ БОЛЬШЕ, УКАЗАТЬ

Скажем, у меня есть страница под названием «Страница редактора» и пользовательский элемент управления под названием «Кнопки редактора». На пользовательском элементе управления «Кнопки редактора» у меня есть кнопка сохранения (которая является веб-элементом управления). Я хочу, чтобы событие Click кнопки сохранения обрабатывалось «страницей редактора», а не пользовательским элементом управления.

Причина этого в том, что я хочу указать базовые страницы, которые реализуют общее поведение.

Ответы [ 3 ]

6 голосов
/ 19 марта 2013

Этот метод обычно называют «всплывающим событием».

Вот пример:

public partial class Test : System.Web.UI.UserControl

{

 public event EventHandler buttonClick;

 protected void Button1_Click(object sender, EventArgs e)
 {
     buttonClick(sender, e);
 }

}

Затем вы можете подписаться на кнопку событияНажмите на веб-страницу для отображения различной информации.

public partial class Test: System.Web.UI.Page
 {
 protected void Page_Load(object sender, EventArgs e)
 {

 UserControlID.buttonClick+=new EventHandler(UserControlID_buttonClick);

}

protected void UserControlID_buttonClick(object sender, EventArgs e)
 {
     Response.Write("hello,I am jack.");
 }

}
4 голосов
/ 03 июня 2009

Я предполагаю, что у вас есть код для UserControl. Если это так, вы можете определить событие Save в вашем пользовательском элементе управления, чтобы оно отображало событие Click кнопки сохранения, либо непосредственно , либо путем внутренней установки обработчика события и вызова события Save когда кнопка нажата. Это может выглядеть примерно так в UserControl:

public event EventHandler Save;

private void SaveButton_Click(object sender, EventArgs e)
{
    OnSave(e);
}

protected void OnSave(EventArgs e)
{
    // raise the Save event
    EventHandler save = Save;
    if (save != null)
    {
        save(this, e);
    }
}
1 голос
/ 19 марта 2013

UserControl1.ascx

UserControl1.ascx.cs

открытый частичный класс UserControl1: System.Web.UI.UserControl

{

public event EventHandler UserControl1Click;



protected void Page_Load(object sender, EventArgs e)

{

}



protected void btn1_Click(object sender, EventArgs e)

{

    UserControl1Click(sender, e);

}

}

UserControl2.ascx

UserControl1.ascx.cs

открытый частичный класс UserControl2: System.Web.UI.UserControl

* * {Тысяча двадцать-один
public event EventHandler UserControl2Click;



protected void Page_Load(object sender, EventArgs e)

{

} 




protected void btn2_Click(object sender, EventArgs e)

{

    UserControl2Click(sender, e);

}

}

Затем добавьте одно текстовое поле Asp.Net (для отображения идентификатора пользовательского элемента управления) и выше двух пользовательских элементов управления на страницу Aspx, как показано ниже.

<title>Untitled Page</title>

<form id="form1" runat="server">



<div>



<asp:TextBox ID="txt1" runat="server"></asp:TextBox> <br />



<UC1:UC ID="uc1" runat="server" />



<UC1:UC ID="uc2" runat="server" />



</div>



</form>

Теперь добавьте обработчик событий для каждого пользовательского элемента управления для обработки события нажатия кнопки двух элементов управления, как показано ниже.

открытый частичный класс _Default: System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

    uc1.UserControl1Click += new EventHandler(uc1_UserControl1Click);

    uc2.UserControl2Click += new EventHandler(uc2_UserControl2Click);

}



protected void uc1_UserControl1Click(object sender, EventArgs e)

{

    txt1.Text = "User Control 1 Clicked";

}



protected void uc2_UserControl2Click(object sender, EventArgs e)

{

    txt1.Text = "User Control 2 Clicked";

}

}

Если щелкнуть «Пользовательский элемент управления 1», в текстовом поле отобразится «Пользовательский элемент управления 1 нажат», или, если щелкнуть «Пользовательский элемент управления 2», в текстовом поле «Пользовательский элемент управления 2 щелкнул».

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