如何找出鼠标悬停pictureBox在代码中创建?

时间:2018-06-02 22:46:31

标签: c# visual-studio object

我需要知道鼠标悬停在我的图片框中。如果我从Toolbox添加它我将只添加事件,但如何从代码中执行它。我试过这个:

if(Cursor.Position == myObject.Location)
{
   //do something...
}

但它不起作用,任何人都可以给我解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

除了Idan的回答,您还可以使用lambda表达式:

PictureBox pBox = new PictureBox() { SizeMode = PictureBoxSizeMode.Zoom };
pBox.MouseHover += (ss, ee) =>
{
    // your code here
    // .. 
};

请注意,我将sendere的名称更改为其他内容(您的选择),因为此代码通常位于事件本身中。如果将它放入函数中,则无需更改名称..

同样值得注意的是:与上述代码在同一scope中定义的任何变量都将保留给代码!这可能是使用lambda的优势..

但是,如果你做得对,你当然也可以使用你问题中的代码:

if(myobject.ClientRectangle.Contains(myobject.PointToClient(Control.MousePosition)))
{
   //do something...
};

请注意

  • 我使用Rectangle.Contains函数
  • 我将Control.MousePosition的屏幕坐标转换为相对于控件的屏幕坐标..

答案 1 :(得分:2)

您没有指定您正在使用的技术。假设它是WinForms, 你需要在控件的MouseHover事件中添加一个事件处理程序,例如:

this.pictureBox.MouseHover += new System.EventHandler(this.pictureBox_MouseHover);

然后,做你想要的内容" pictureBox_MouseHover(object sender,EventArgs e)"功能