C # MouseLeave запускается до отображения контекстного меню?

#c# #winforms #events #contextmenu

#c# #winforms #Мероприятия #contextmenu

Вопрос:

У меня есть ContextMenu в моей форме, и некоторые параметры должны быть отключены по умолчанию, но включены, когда пользователь щелкает правой кнопкой мыши на панели.

Как я это написал, панель, которая разрешает этот конкретный пункт меню, имеет два обработчика событий:

  • MouseEnter -> включает опцию
  • MouseLeave -> отключает опцию

MouseEnter работает, но, к сожалению, MouseLeave вызывается, как только пользователь щелкает правой кнопкой мыши. Это означает, что независимо от того, где пользователь щелкает правой кнопкой мыши, пункт меню всегда отключен.

Есть идеи, как это обойти?

Комментарии:

1. MouseLeave не должен быть подходящим кандидатом.. Вы должны использовать событие ContextMenu для выполнения того, что вы делаете в MouseLeave..

Ответ №1:

Это неизбежно. Как только всплывает контекстное меню, мышь захватывается меню и запускается событие MouseLeave панели. Вам придется сделать это по-другому. Я не могу придумать достойную альтернативу, для меня не имеет никакого смысла, что вы это делаете. Панель имеет собственное свойство ContextMenuStrip, возможно, это зацепка. Или ContextMenuStrip.Свойство SourceControl.

Комментарии:

1. Спасибо, Ганс. Это заняло немного времени, но я переписал способ реализации ContextMenuStrip и прикрепил его непосредственно к панелям.