发出正确投射事件的问题,包括自定义的 EventArgs
Issue to properly cast an event including a customized EventArgs
我正在制作 Win Form。
我的按钮之一的点击事件需要接受自定义参数(继承自 EventArgs):
private void B_Say_Click(object sender, Custom_EventArgs e) //instead of EventArgs e
{
....
}
(原因是当我按下按钮时可能会调用此方法,但也会在我需要获取自定义数据的不同其他上下文中调用(我想通过 Custom_EventArgs 传递)。
当然我已经包含了派生的 class:
public class Custom_EventArgs : EventArgs
{
public string say_string;
}
编译器为行生成此错误:
this.B_Say.Click += new System.EventHandler(this.B_Say_Click);
错误 3 'B_Say_Click' 没有重载匹配委托 'System.EventHandler'
如果我尝试使用 EventHandler 的通用版本:
this.B_Say.Click += new System.EventHandler<Custom_EventArgs>(this.B_Say_Click);
我得到:
错误 3 无法将类型 'System.EventHandler' 隐式转换为 'System.EventHandler'
我想 System.Windows.Forms.Button class 中按钮的关联事件签名只接受 EventHandler。
由于 Custom_EventArgs 派生自 EvenArgs,我想我们可以显式地将 Custom_EventArgs 转换为 Eventargs 来解决问题,但我不确定该怎么做?
如果铸造不是解决方案,还有其他解决方案吗?
提前致谢。
您不能更改活动签名。但是,您可以检查传递的事件参数的类型。
private void B_Say_Click(object sender, EventArgs e) {
var customArgs = e as Custom_EventArgs;
if (null != customArgs) {
// do what you want
}
}
我正在制作 Win Form。 我的按钮之一的点击事件需要接受自定义参数(继承自 EventArgs):
private void B_Say_Click(object sender, Custom_EventArgs e) //instead of EventArgs e
{
....
}
(原因是当我按下按钮时可能会调用此方法,但也会在我需要获取自定义数据的不同其他上下文中调用(我想通过 Custom_EventArgs 传递)。
当然我已经包含了派生的 class:
public class Custom_EventArgs : EventArgs
{
public string say_string;
}
编译器为行生成此错误:
this.B_Say.Click += new System.EventHandler(this.B_Say_Click);
错误 3 'B_Say_Click' 没有重载匹配委托 'System.EventHandler'
如果我尝试使用 EventHandler 的通用版本:
this.B_Say.Click += new System.EventHandler<Custom_EventArgs>(this.B_Say_Click);
我得到: 错误 3 无法将类型 'System.EventHandler' 隐式转换为 'System.EventHandler'
我想 System.Windows.Forms.Button class 中按钮的关联事件签名只接受 EventHandler。
由于 Custom_EventArgs 派生自 EvenArgs,我想我们可以显式地将 Custom_EventArgs 转换为 Eventargs 来解决问题,但我不确定该怎么做?
如果铸造不是解决方案,还有其他解决方案吗?
提前致谢。
您不能更改活动签名。但是,您可以检查传递的事件参数的类型。
private void B_Say_Click(object sender, EventArgs e) {
var customArgs = e as Custom_EventArgs;
if (null != customArgs) {
// do what you want
}
}