窗口中有多个label控件,鼠标移上去时改变它的背景色,离开时恢复原来的背景色。
    private void label1_MouseHover(object sender, EventArgs e)
    {
      ..........;
    }
    private void label2_MouseHover(object sender, EventArgs e)
    {
      ..........;
    }
    private void label3_MouseHover(object sender, EventArgs e)
    {
      ..........;
    }
.
.
.
    private void labeln_MouseHover(object sender, EventArgs e)
    {
      ..........;
    }
如何简化到一个类事件(用一个过程来搞定上面的所有过程)来处理呢?

解决方案 »

  1.   

    都用一个事件就可以了,sender就是触发事件label,强转一下就可以了。
      

  2.   


    this.label1.MouseHover += new EventHandler(labeln_MouseHover);
    this.label2.MouseHover += new EventHandler(labeln_MouseHover); 
      

  3.   

        private void label1_MouseHover(object sender, EventArgs e) 
        { 
            label1.BackColor = Color.LightSkyBlue;
        } 
        private void label2_MouseHover(object sender, EventArgs e) 
        { 
            label2.BackColor = Color.LightSkyBlue;
        } 那用
    this.label1.MouseHover += new EventHandler(labeln_MouseHover);
    this.label2.MouseHover += new EventHandler(labeln_MouseHover); 
    后    private void labeln_MouseHover(object sender, EventArgs e) 
        { 
          ???;
        } 
    中的代码如何填写呢?
      

  4.   

    1.在程序中用代码动态生成上面的三个标签对象,并为它们生成一个事件!
    2.在时间里面调用SENDER参数,因为SENDER代表是那个标签发出的事件!for(int i=0;i<3;i++)
    {
    label lab=new label();
    lab.name=i;
    lab.MouseHover += new EventHandler(lab_MouseHover);
    }private void labeln_MouseHover(object sender, EventArgs e) 
        { 
          label lab=sender as label;//具体发出事件的LABEL对象
          messagebox.show("这是"+lab.name,"提示");
        } 
      

  5.   

    不好意思,private void  labeln_MouseHover(object sender, EventArgs e) 
    改成:private void  lab_MouseHover(object sender, EventArgs e)
      

  6.   

    private void labeln_MouseHover(object sender, EventArgs e) 
        { 
              ((label)sender).BackColor = Color.LightSkyBlue; 
        } 
      

  7.   

    都可以注册到同一个事件处理程序,然后判断是谁激发的事件即可:
    private void label1_Event(object sender, EventArgs e)
    {
       if(sender.equal(label1))  // 判断是谁激发
       {
       }
       else if()
       {
       }
       // 
    }
      

  8.   

    private void labeln_MouseHover(object sender, EventArgs e) 

        //如果所有的LABEL都设为一个颜色的话,这么做就可以了.
        ((Label)sender).BackColor = Color.LightSkyBlue;