【问题标题】:Expose OnSelectedIndexChanged event in CompositeControl在 CompositeControl 中公开 OnSelectedIndexChanged 事件
【发布时间】:2009-02-01 23:45:59
【问题描述】:

如果我有一个构成 CompositeControl 一部分的 DropDownList 控件,我如何将 SelectedIndexChanged 事件公开给正在使用的 aspx 页面?

谢谢

【问题讨论】:

    标签: c# asp.net composite-controls


    【解决方案1】:

    有一种更简单的方法是直接通过。

    试试这个:

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

    [编辑] 除非你当然需要注入自定义逻辑。

    【讨论】:

    • 我使用这个方法没有成功。我的问题原来是我的控件属性和我的标记属性之间的命名约定问题。对于其他人,请记住标记中的 OnSelectedIndexChanged 将匹配控件的 SelectedIndexChanged 属性。
    【解决方案2】:

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

    public event EventHandler SelectedIndexChanged;
    

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

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

    您真正要做的只是包装原始事件并重新引发它。

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

    【讨论】:

      猜你喜欢
      • 2012-02-28
      • 2011-08-17
      • 2012-12-13
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 2011-05-08
      相关资源
      最近更新 更多