日期:2014-05-18  浏览次数:20483 次

怎么使用自己写的EventArgs子类代替事件的EventArgs???
比如Button的Click事件,如下:
protected   void   btnDel_Click(object   sender,   EventArgs   e)
{
        。。。
}
我觉得e类提供的参数太少,不够用或者用不上,我就写了一个继承自EventArgs的类MyEventArgs,如下:
public   class   MyEventArgs:   EventArgs
{
        ...
}
我在page_load中,添加:
btnDel.Click   +=new   EventHandler(btnDel_Click);
MyEventArgs   args   =   new   MyEventArgs();
...//给MyEventArgs   中的属性赋值

在把Click事件该为:
protected   void   btnDel_Click(object   sender,   MyEventArgse)
{
        。。。
}

现在问题是:
这里btnDel.Click   +=new   EventHandler(btnDel_Click);老是报类型错误!
请问我该怎么做呢?
要是用自己的事件参数该怎么做?
难道只有重写控件了吗?

------解决方案--------------------
继承,重写
------解决方案--------------------
必需用基类:
protected void btnDel_Click(object sender, EventArgs args)
{
。。。
}
------解决方案--------------------
你必须重新继承EventHandler委托并填充你的事件参数,因为你没有更新Listener
------解决方案--------------------
1。
方向搞错!自然不行!

2。
基础知识没有学好!

3。
Click 事件是 Button 生命的,并且其使用的 Delegate (委托)为EventHanlder,此委托原型要求为 void SomeMethod(object, EventArgs)

4。
那么当然不能随便改方法参数

5。
即使可以,我想问下 LZ, 事件又不是你引发的,你怎么给你 MyEventArgs 实例化,并赋值呢?

6。
先学习什么是委托,什么是事件,以及如何使用

7。
如果确实要,那么你只有开发自己 Button,事件引发就全由你处理了
------解决方案--------------------
我觉得e类提供的参数太少,不够用或者用不上,我就写了一个继承自EventArgs的类MyEventArgs,如下:
===========
首先,你从哪里可以实例化此 MyEventArgs 事件呢?
------解决方案--------------------
但是我想要的结果能不能实现呢????
==========
》》》》

7。
如果确实要,那么你只有开发自己 Button,事件引发就全由你处理了

即开发自定义控件


附,慢慢来吧,好好学,此问题,我估计以你现在的知识深度不好理解并妥善解决之。