我需要知道鼠标悬停在我的图片框中。如果我从Toolbox添加它我将只添加事件,但如何从代码中执行它。我试过这个:
if(Cursor.Position == myObject.Location)
{
//do something...
}
但它不起作用,任何人都可以给我解决这个问题吗?
答案 0 :(得分:3)
除了Idan的回答,您还可以使用lambda表达式:
PictureBox pBox = new PictureBox() { SizeMode = PictureBoxSizeMode.Zoom };
pBox.MouseHover += (ss, ee) =>
{
// your code here
// ..
};
请注意,我将sender
和e
的名称更改为其他内容(您的选择),因为此代码通常位于事件本身中。如果将它放入函数中,则无需更改名称..
同样值得注意的是:与上述代码在同一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)"功能