【发布时间】:2009-02-01 23:45:59
【问题描述】:
如果我有一个构成 CompositeControl 一部分的 DropDownList 控件,我如何将 SelectedIndexChanged 事件公开给正在使用的 aspx 页面?
谢谢
【问题讨论】:
标签: c# asp.net composite-controls
如果我有一个构成 CompositeControl 一部分的 DropDownList 控件,我如何将 SelectedIndexChanged 事件公开给正在使用的 aspx 页面?
谢谢
【问题讨论】:
标签: c# asp.net composite-controls
有一种更简单的方法是直接通过。
试试这个:
public event EventHandler SelectedIndexChanged
{
add { this.TargetControl.SelectedIndexChanged += value; }
remove { this.TargetControl.SelectedIndexChanged -= value; }
}
[编辑] 除非你当然需要注入自定义逻辑。
【讨论】:
这就是你要做的。首先声明一个这样的事件:
public event EventHandler SelectedIndexChanged;
然后,在内部,连接到 DropDownList 的 SelectedIndexChangedEvent。在您的事件处理程序中执行以下操作:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.SelectedIndexChanged != null)
{
this.SelectedIndexChanged(sender, e);
}
}
您真正要做的只是包装原始事件并重新引发它。
编辑:请参阅 Brian Rudolph 的回答。这实际上是一种非常简单的方法。
【讨论】: