与方法参数关联的调用事件

时间:2015-10-25 16:21:18

标签: c#

方法有一个输入参数,它是一个表单控件对象(比如一个ComboBox)。我想确定控件是否已注册特定事件,如果是,则触发事件。我尝试输入以下代码,但编译器拒绝它,因为所选事件(在示例SelectedIndexChanged中)只能出现在+ =或 - =运算符的左侧。

private void DoSearch(ComboBox cb) {

     // Once the search is complete, I want to call the event

     // Does this control have a SelectedIndexChanged event registered?
     if (cb.SelectedIndexChanged != null) {
        // call the event
        cb.SelectedIndexChanged(cb, EventArgs.Empty);
     }
}

1 个答案:

答案 0 :(得分:0)

你不能做你要问的事。只有定义事件的类才能引发事件。

甚至子类都不能调用父类的事件。您可能会在子类中看到名为On*的方法(即OnSelectedIndexChanged)。这些用于允许子类调用定义事件以引发事件的基类。这些方法通常标记为protected,因此只有子类可以调用它们。

否则,获取SelectedIndexChanged的方法是设置SelectedIndex属性。