Создание обработчиков событий в пользовательских элементах управления и подписка всех событий на один и тот же обработчик на странице.
UserControl1:
public event EventHandler SomethingChanged;
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
//do OnSelectedIndexChanged logic
if (this.SomethingChanged != null)
this.SomethingChanged(this, e);
}
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
//do OnCheckedChanged logic
if (this.SomethingChanged != null)
this.SomethingChanged(this, e);
}
UserControl2:
public event EventHandler SomethingElseChanged;
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
//do OnTextChanged logic
if (this.SomethingElseChanged != null)
this.SomethingElseChanged(this, e);
}
protected void Button1_Click(object sender, EventArgs e)
{
//do OnClick logic
if (this.SomethingElseChanged != null)
this.SomethingElseChanged(this, e);
}
Страница:
<uc:UserControl1 ID="UserControl1" runat="server" SomethingChanged="UserControl_Changed" ... />
<uc:UserControl2 ID="UserControl2" runat="server" SomethingElseChanged="UserControl_Changed" ... />
Код-за:
protected void UserControl_Changed(object sender, EventArgs e)
{
Label1.Text = "Stuff has changed...";
}
EDIT
См. Эту статью для вызова событий через пользовательские элементы управления:
http://www.codeproject.com/KB/aspnet/EventsAcrossUCs.aspx