Интересная проблема. Если вы поместите 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;
}