所以我有一个面板,在鼠标进入和鼠标离开时,我改变了停靠在其中的一些控件的可见性。
问题是,每当我将鼠标悬停在面板中的控件上时,鼠标进入,然后移动到该单独的控件,因此它们是不可见的。
有没有什么方法可以让这项工作不需要为面板中的每个控件编写这两个事件?
干杯:)
发布于 2012-01-18 22:32:03
有趣的问题。如果您在MouseEnter或MouseLeave中放置一个Console.WriteLine,您将注意到,当您的鼠标移动到它隐藏的控件上时,会导致鼠标回到面板上,然后显示导致控件隐藏的控件……
我知道如何完成您的请求的唯一方法是删除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;
}https://stackoverflow.com/questions/8901704
复制相似问题