C # MouseLeave сработал перед показом контекстного меню? - PullRequest
2 голосов
/ 11 апреля 2011

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

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

  • MouseEnter -> включает параметр
  • MouseLeave -> отключает параметр

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

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

1 Ответ

3 голосов
/ 11 апреля 2011

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

...