传播C#鼠标离开事件
我正在制作一个c#桌面应用程序,我制作了一个带有按钮的usercontrol,我想让这个按钮只在我在这个用户控件中时才可见,但有一个问题: 当我将鼠标悬停在鼠标控件内的按钮上时,会检测到usercontrol的鼠标移动,这会造成一个大问题传播C#鼠标离开事件,c#,winforms,C#,Winforms,我正在制作一个c#桌面应用程序,我制作了一个带有按钮的usercontrol,我想让这个按钮只在我在这个用户控件中时才可见,但有一个问题: 当我将鼠标悬停在鼠标控件内的按钮上时,会检测到usercontrol的鼠标移动,这会造成一个大问题 注意:我无法处理来自父控件的偶数by MouseMove,因为每个用户控件作为表中的一行工作时,我将有许多来自此用户控件的实例。解决方案是在每个事件处理程序中检查鼠标指针是否在控件上方 下面的helper方法将告诉我们鼠标指针是否在控件上(无论是UserCon
注意:我无法处理来自父控件的偶数by MouseMove,因为每个用户控件作为表中的一行工作时,我将有许多来自此用户控件的实例。解决方案是在每个事件处理程序中检查鼠标指针是否在控件上方 下面的helper方法将告诉我们鼠标指针是否在控件上(无论是UserControl还是标准控件) 通过测试此方法的返回值,我们可以在MouseLeave事件中确定鼠标仍在用户控件上,并相应地操纵按钮的可见性:
private void UserControl1_MouseLeave(object sender, EventArgs e)
{
if (!IsMouseOver(this))
{
button1.Visible = false;
}
}
private void UserControl1_MouseEnter(object sender, EventArgs e)
{
if (IsMouseOver(this))
{
button1.Visible = true;
}
}
这很有效,非常感谢!也许与我们分享(部分)您的实现,这样我们可以更好地了解正在发生的事情。
private void UserControl1_MouseLeave(object sender, EventArgs e)
{
if (!IsMouseOver(this))
{
button1.Visible = false;
}
}
private void UserControl1_MouseEnter(object sender, EventArgs e)
{
if (IsMouseOver(this))
{
button1.Visible = true;
}
}