如题:
    是这样的,在我的程序中,多种控件共享一个事件的执行过程.
    例如:
        点击一个Button,会执行 ABC(object sender, MouseEventArgs e);
        同时,点击一个Label也会执行 ABC(object sender, MouseEventArgs e);
        当然,还有其他的按钮,都会执行同一个事件 ABC(object sender, MouseEventArgs e);
    问题:
        我如何判断这是一个按钮还是一个其他的控件啊,
        因为如果是一个Button,我要显示 ((button)sender)).text
               是一个Label,我要显示  ((Label)sender)).text
        我不想每次都用IF来判断,能不能直接使用 Sender的一个属性然后就可以直接调用 .text 属性了啊.
    谢谢,我会一直在线, 很急的.谢谢

解决方案 »

  1.   

    if(sender is Button)
    {
    }
    else if(sender is Label)
    {
    }
      

  2.   

    因为button和label都是从Control派生出来,可这样用
    Control c = sender as Control;
    //然后直接使用Control的Text属性
    c.Text = "";
      

  3.   

    if(sender is Button)
    {
    }
      

  4.   

    只能这样啊,我的意思是有没有类拟于  sender.xxx.text 这种用法啊.
      

  5.   

    用If是可以,但我有好多事件, 什么鼠标移动啊,点击啊, 拖动啊.好多好多,这样的话,每个里面来一堆IF也是一件很麻烦的事啊,呵呵, 以后整理的时候也不好整理.呵
      

  6.   

    zlc_168 :发表于:2007-11-13 13:28:562楼 得分:0 
    因为button和label都是从Control派生出来,可这样用 
    Control   c   =   sender   as   Control; 
    //然后直接使用Control的Text属性 
    c.Text   =   " "; 
    ------------------zlc_168的方法好像可以了,我刚试了下,行了,呵,谢谢了啊.我很快会结帖.
      

  7.   

    最后我再给大家一个例子吧,以后其他人就容易理解了,哈
    if (Left >= 0)
       ((Control)(MyControl[k].thisControl)).Left = Left;
    if (Top >= 0)
       ((Control)(MyControl[k].thisControl)).Top = Top;
    if (Width >= 0)
       Control)(MyControl[k].thisControl)).Width = Width;
    if (Height >= 0)
       ((Control)(MyControl[k].thisControl)).Height = Height;谢谢大家
      

  8.   

    to fuadam OO有多态了 还用if不是有点浪费多态了?
      

  9.   

    在webform里,label没有click事件啊,你这个WINFORM?你可以看看sender.ToString()两个是不一样的,一个是System.Windows.Forms.Button, Text: button1另外一个是System.Windows.Forms.Label, Text: label1
      

  10.   

    哦,谢谢anncesky 的善意提醒,
    对于Label我只是做个例子罢了.
    其实我要的鼠标的按下,抬起,这些,
    其实你仔细看我的ABC(object   sender,   MouseEventArgs   e); 
    后面的 E 的类型不是Click下用的.
    哈,我的问题已经解决了,刚从代码中删除了一大堆的多余代码,现在代码简洁多了,哈