方法有一个输入参数,它是一个表单控件对象(比如一个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);
}
}
答案 0 :(得分:0)
你不能做你要问的事。只有定义事件的类才能引发事件。
甚至子类都不能调用父类的事件。您可能会在子类中看到名为On*
的方法(即OnSelectedIndexChanged
)。这些用于允许子类调用定义事件以引发事件的基类。这些方法通常标记为protected
,因此只有子类可以调用它们。
否则,获取SelectedIndexChanged
的方法是设置SelectedIndex
属性。