有几个自定义类型的控件,给这几个控件添加MouseDown事件,在事件响应函数中想实现一下功能
Mouse(object sender, MouseEventArgs e)void Mouse(object sender, MouseEventArgs e)
{
//获取sender的实际类型
//根据实际的类型完成我的自定义操作
}因为这几个控件的时间相应函数中的操作都相同,所以不想单独对每个控件写一个相应程序,有什么方法可以获取到sender实际被装箱的类型
我的笨方法就是对于每个控件类型使用as运算符
如下:
MyType1 mt1=sender as MyType1;
MyType2 mt2=sender as MyType2;
MyType3 mt3=sender as MyType3;if(mt1!=null)
{
//......
}if(mt2!=null)
{
//......
}if(mt3!=null)
{
//......
}但是这样的代码太臃肿,而且在我添加新的类型控件的时候也不方便
请问大家有没有什么好的方法

解决方案 »

  1.   

    sender.GetType()所有对象都有类型名...
      

  2.   

    另外...不要随便给人家“装箱”,装箱仅仅指值类型装箱为object...本来就是引用类型的没有什么装箱只说...
      

  3.   

    sender.GetType()  能获取对应的类型,,
    不过,事件处理函数还是要分开写的
      

  4.   

    c#内部是通过反射机制来实现的。
    你可以用sender.GetType()方法来获取它的真实类型名称,再根据自己的业务需求做下一步的处理。
    但,这里给你一个建议:接下来如何做,直接影响到你上一步判定sender类型的用途,
    做不好,你判断了实际类型,也没有太大意义。
    处理函数要分开写,既然你的规则大体相同,何不尝试一下设计模式中的一种或多种?