在CompositeControl中公开OnSelectedIndexChanged事件

时间:2008-12-18 17:50:36

标签: c# asp.net composite-controls

如果我有一个构成CompositeControl一部分的DropDownList控件,我怎样才能将SelectedIndexChanged事件公开给消费的aspx页面?

由于

2 个答案:

答案 0 :(得分:11)

有一种更为简单的直接传递方式。

试试这个:

    public event EventHandler SelectedIndexChanged
    {
        add { this.TargetControl.SelectedIndexChanged += value; }
        remove { this.TargetControl.SelectedIndexChanged -= value; }
    }

[编辑]除非您需要注入自定义逻辑。

答案 1 :(得分:4)

这是你做的。首先声明一个这样的事件:

public event EventHandler SelectedIndexChanged;

然后,在内部,连接到DropDownList的SelectedIndexChangedEvent。在您的事件处理程序中执行以下操作:

        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.SelectedIndexChanged != null)
            {
                this.SelectedIndexChanged(sender, e);
            }
        }

你真正做的就是包装原始事件并重新提升它。

编辑:请参阅Brian Rudolph的回答。事实上,这是一种非常简单的方法。