Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
传播C#鼠标离开事件_C#_Winforms - Fatal编程技术网

传播C#鼠标离开事件

传播C#鼠标离开事件,c#,winforms,C#,Winforms,我正在制作一个c#桌面应用程序,我制作了一个带有按钮的usercontrol,我想让这个按钮只在我在这个用户控件中时才可见,但有一个问题: 当我将鼠标悬停在鼠标控件内的按钮上时,会检测到usercontrol的鼠标移动,这会造成一个大问题 注意:我无法处理来自父控件的偶数by MouseMove,因为每个用户控件作为表中的一行工作时,我将有许多来自此用户控件的实例。解决方案是在每个事件处理程序中检查鼠标指针是否在控件上方 下面的helper方法将告诉我们鼠标指针是否在控件上(无论是UserCon

我正在制作一个c#桌面应用程序,我制作了一个带有按钮的usercontrol,我想让这个按钮只在我在这个用户控件中时才可见,但有一个问题:

当我将鼠标悬停在鼠标控件内的按钮上时,会检测到usercontrol的鼠标移动,这会造成一个大问题


注意:我无法处理来自父控件的偶数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;
    }
}