Интересная проблема. Если вы поместите 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;
}
Возможный дубликат [Панель не получает фокус] (http://stackoverflow.com/questions/3562235/panel-not-getting-focus) –