Vb.net 停止“;“儿童”;控制焦点?

Vb.net 停止“;“儿童”;控制焦点?,vb.net,winforms,visual-studio-2010,.net-4.0,onmouseover,Vb.net,Winforms,Visual Studio 2010,.net 4.0,Onmouseover,所以我有一个面板,在鼠标进入和离开时,我改变了一些控件的可见性,这些控件停靠在面板内 问题是,每当我将鼠标悬停在面板中的某个控件上时,鼠标进入该控件,然后移动到该独立控件,因此它们将不可见 是否有任何方法可以使这项工作不必为面板中的每个控件编写这两个事件 干杯:)有趣的问题。如果将Console.WriteLine放入MouseEnter或MouseLeave中,您会注意到当鼠标移动到控件上时,它会隐藏,这会导致鼠标回到面板上,然后面板会显示导致控件隐藏的控件 我知道如何完成您的请求的唯一方法是

所以我有一个面板,在鼠标进入和离开时,我改变了一些控件的可见性,这些控件停靠在面板内

问题是,每当我将鼠标悬停在面板中的某个控件上时,鼠标进入该控件,然后移动到该独立控件,因此它们将不可见

是否有任何方法可以使这项工作不必为面板中的每个控件编写这两个事件


干杯:)

有趣的问题。如果将Console.WriteLine放入MouseEnter或MouseLeave中,您会注意到当鼠标移动到控件上时,它会隐藏,这会导致鼠标回到面板上,然后面板会显示导致控件隐藏的控件

我知道如何完成您的请求的唯一方法是删除MouseEnter和MouseLeave事件。然后我在包含面板的表单中添加了一个MouseMove事件。我还向面板添加了MouseMove事件。这两个事件都调用一个例程,该例程检查鼠标坐标,以确定鼠标是否位于面板上方。如果MouseCheck例程返回true,则显示控件,否则隐藏控件。下面的例子是C#,但我相信你能理解这个想法

   private bool MouseCheck(Control ctl, Point point)
    {
        bool blnRet = false;

        if (point.X < ctl.Left)
        {
            blnRet = false;
        }
        else if (point.X > ctl.Left + ctl.Width)
        {
            blnRet = false;
        }
        else if (point.Y < ctl.Top)
        {
            blnRet = false;
        }
        else if (point.Y > ctl.Top + ctl.Height)
        {
            blnRet = false;
        }
        else
        {
            blnRet = true;
        }

        return blnRet;
    }
private bool MouseCheck(控制ctl,点-点)
{
bool-blnRet=false;
如果(X点<控制左)
{
blnRet=假;
}
否则如果(点X>控制左+控制宽度)
{
blnRet=假;
}
否则,如果(点Y控制顶部+控制高度)
{
blnRet=假;
}
其他的
{
blnRet=真;
}
返回blnRet;
}