调用与方法参数关联的事件
本文关键字:事件 关联 参数 方法 调用 | 更新日期: 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
升高。