C#克隆MouseHover / MouseLeave适用于原始控件&不是最新的

时间:2016-05-01 09:54:45

标签: c# mouseover mouseleave mousehover

我有一个表单,我在面板中添加控件

  

其中一个是PictureBox,它包含一个MouseHover / MouseLeave事件   此

void PropAction_pBoxMouseLeave(object sender, EventArgs e)
{
    PropAction_pBox.ImageLocation = @"PicButtons\PropertiesBtn2.png";
}
void PropAction_pBoxMouseHover(object sender, EventArgs e)
{
    PropAction_pBox.ImageLocation = @"PicButtons\PropertiesBtn2White.png";
}

在添加按钮中,我有这段代码

  在newPropAction (原创)

创建 按钮 ,加   它在列表中*

     
    

“newPropAction_pBox代表新的PictureBox& PropAction_pBox代表原始的PictureBox”*

  
        PictureBox newPropAction_pBox = new PictureBox();
        newPropAction_pBox.Image = PropAction_pBox.Image;
        newPropAction_pBox.Click += PropAction_pBoxClick;
        newPropAction_pBox.MouseHover += PropAction_pBoxMouseHover;
        newPropAction_pBox.MouseLeave += PropAction_pBoxMouseLeave;
        this.Controls.Add(newPropAction_pBox);// add to controls
        ActionPictures.Add(newPropAction_pBox); //Add to btn to list    

最终效果(下图)

  

鼠标尚未在pictureBox上:http://prnt.sc/axt8b9

     

鼠标放在新的PictureBox上:http://prnt.sc/axt9ul

1 个答案:

答案 0 :(得分:0)

更改代码如下

void PropAction_pBoxMouseLeave(object sender, EventArgs e)
{
    var pictureBox = (PictureBox)sender;
    pictureBox.ImageLocation = @"PicButtons\PropertiesBtn2.png";
}

void PropAction_pBoxMouseHover(object sender, EventArgs e)
{
    var pictureBox = (PictureBox)sender;
    pictureBox.ImageLocation = @"PicButtons\PropertiesBtn2White.png";
}

对象sender是事件的来源。参数sender指的是引发事件的实例 因此,事件处理程序接收信息,该事件的来源是什么类型的对象。