【发布时间】:2011-11-16 22:18:36
【问题描述】:
我想知道鼠标是否在 .NET 中的特定控件中
private void panel1_MouseLeave(object sender, EventArgs e)
{
if (MouseIsInControl((Control)sender)
return; //the mouse didn't leave, don't fire a MouseLeave event
...
}
public Boolean MouseIsInControl(Control control)
{
//return (control.Bounds.Contains(MousePosition));
return control.Bounds.Contains(control.PointToClient(MousePosition))
}
但我需要有人摆弄四个不同的坐标系才能使其工作.
相关问题
【问题讨论】:
-
好的,你的问题是什么?你刚刚自己说了怎么解决……
-
这不是多余的吗?如果鼠标没有离开控件,它不会触发 mouseleave 事件。我错过了什么吗?
-
@LarsTech 检测鼠标何时在表单内,我只需要对表单进行控制。
-
WinForms 中有一个“怪癖”:如果将鼠标移到 面板内 的另一个控件上,则会触发
MouseLeave事件(表示鼠标已离开控制板)。有点像我离开家时我家的警报系统会启动 - 而实际上我还在我家,就在浴室里。