在一个鼠标Click事件中
viod mClick(object sender, EventArgs e){}如果发送人是 button类型的话,可以
((button)sender).Text="adsf";
这样改变内容.但是如果是未知类型呢?而该类型也有Text、Name等属性有没有适合任意类型的转换可以直接给Text、Name等属性进行赋值的方法?

解决方案 »

  1.   

    可以很负责任的告诉你,sender可以是object的任何派生类,而有部分类才会有Text和Name,所以有些转换是失败的;1、使用反射,看能不能取到Text和Name,如果取到就更改,如果取不到就放弃修改;2、除非你自己定义一个接口,然后你自己写控件,并实现你的接口,这样你的控件在触发事件时,就可以转抽换为你的接口了;
      

  2.   

    安全的做法是 :
    先判断类型
    viod mClick(object sender, EventArgs e){
      if(sender is Control)
    {
         (sender as Control).Text="adsf"
    }
    }
      

  3.   

    但是如果是未知类型呢?而该类型也有Text、Name等属性
    --------------------------总归是个控件吧,控件都是从Control类派生的,转换为Control就是了。
      

  4.   

    刚才用 这个方法试了下 返回的是 Object  不知道是不是你想要的
      

  5.   

    啊对了,,我刚才试了下  在 btn事件里
    sender.GetType().Name  返回的是  Button