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

本文关键字:事件 关联 参数 方法 调用 | 更新日期: 2023-09-27 18:19:06

方法有一个输入参数,该参数是一个表单控件对象(比如一个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);
     }
}

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

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

即使是子类也不能调用父类的事件。您可能会看到,在子类中,方法称为On*(即OnSelectedIndexChanged)。它们用于允许子类调用定义事件的基类以引发事件。这些方法通常被标记为protected,这样只有子类才能调用它们。

否则,通过设置SelectedIndex属性使SelectedIndexChanged升高。