关于EventArgs,急~~在线等 在不同的事件处理函数里e的成员都不同比如在Click事件和Load事件里,e就不一样,是怎么回事?我也想通过类似的方法处理两个相似的事件,通过同一个委托,只是传递的参数略为不同 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这和EventHandler有关,如果委托类型相同,可以公用 在不同的事件处理函数里e的成员都不同比如在Click事件和Load事件里,e就不一样,是怎么回事?==========================================当然不同,因为引发的事件是不同的,建议楼主好好看看msdn上关于事件的描述我也想通过类似的方法处理两个相似的事件,通过同一个委托,只是传递的参数略为不同===========================================你可以通过多态来实现 public interface ieventargs{ void test();}第一种事件EventArgs;public class eventargs1:System.EventArgs,ieventargs{ ....//别的代码从略 public void test() { System.Console.Write("事件一"); } }第二种事件EventArgs;public class eventargs2:System.EventArgs,ievent{ public void test() { System.Console.Write("事件二"); }}引发事件一....if( OnEvent1 ){ OnEvent1( this , new EventArg1() );}....引发事件二if( OnEvent2 ){ OnEvent2( this , new EventArg2() );}实际处理事件函数public void enventhandl( object sender , System.EventArgs e ){ ieventargs ie = e as ieventargs ; ie.test(); } 你看看下列代码是不是你要的:public delegate void ClickEventHandler(object sender, ClickArgs e);public delegate void LoadEventHandler(object sender, LoadArgs e);public event ClickEventHandler Click;public event LoadEventHandler Load;public class ClickArgs:EventArgs { public ClickArgs(int id) { _id=id; } private int _id; public int ID { set{_id=value;} get{return _id;} } } public class LoadArgs:EventArgs { public LoadArgs(int id,string name) { _id=id; _name=name; } private int _id; public int ID { set{_id=value;} get{return _id;} } private string _name; public string Name { set{_name=value;} get{return _name;} } }触发:ClickArgs e=new ClickArgs(1);if ((this.Click != null)){this.click(this, e);}load同上调用:this.Click+=new ClickEventHandler(ClassEvent_Click);this.Load+=new LoadEventHandler(ClassEvent_Load);private void ClassEvent_Click(object sender, ClickArgs e){}private void ClassEvent_Load(object sender, LoadArgs e){} C# Socket 捕获不到异常 急阿.关于DataTable的一个很弱智的问题. 在DLL中怎样读取win项目配置信息? 对于网站设计师 怎样删除C#中的自定义控件啊?? 求教NotifyIcon效果与主窗体隐藏实现 用Visual C#读Excel文件的发现的有问题,怎么解决呀。 怎样在建立一个类下的数组?(高手进来看看) 病毒!病毒! 哪位能告诉我c#中数据库的连接方法?急。。。。 求vs.net2005正式版的HTTP下载地址 在Smart CLient 应用中,如何使用文件路径,打开一个服务器上的文件,而不会在客户端提示找不到这个文件
比如在Click事件和Load事件里,e就不一样,是怎么回事?
==========================================
当然不同,因为引发的事件是不同的,建议楼主好好看看msdn上关于事件的描述我也想通过类似的方法处理两个相似的事件,通过同一个委托,只是传递的参数略为不同
===========================================
你可以通过多态来实现
{
void test();}
第一种事件EventArgs;public class eventargs1:System.EventArgs,ieventargs
{
....//别的代码从略
public void test()
{
System.Console.Write("事件一");
}
}
第二种事件EventArgs;public class eventargs2:System.EventArgs,ievent
{
public void test()
{
System.Console.Write("事件二");
}
}
引发事件一
....
if( OnEvent1 )
{
OnEvent1( this , new EventArg1() );
}
....
引发事件二
if( OnEvent2 )
{
OnEvent2( this , new EventArg2() );}
实际处理事件函数
public void enventhandl( object sender , System.EventArgs e )
{
ieventargs ie = e as ieventargs ;
ie.test();
}
public delegate void ClickEventHandler(object sender, ClickArgs e);public delegate void LoadEventHandler(object sender, LoadArgs e);public event ClickEventHandler Click;
public event LoadEventHandler Load;public class ClickArgs:EventArgs
{
public ClickArgs(int id)
{
_id=id;
}
private int _id;
public int ID
{
set{_id=value;}
get{return _id;}
}
} public class LoadArgs:EventArgs
{
public LoadArgs(int id,string name)
{
_id=id;
_name=name;
}
private int _id;
public int ID
{
set{_id=value;}
get{return _id;}
}
private string _name;
public string Name
{
set{_name=value;}
get{return _name;}
}
}
触发:
ClickArgs e=new ClickArgs(1);
if ((this.Click != null))
{
this.click(this, e);
}
load同上
调用:
this.Click+=new ClickEventHandler(ClassEvent_Click);
this.Load+=new LoadEventHandler(ClassEvent_Load);private void ClassEvent_Click(object sender, ClickArgs e)
{}private void ClassEvent_Load(object sender, LoadArgs e)
{}