Динамически включать или отключать пункты контекстного меню

#c# #winforms

#c# #winforms

Вопрос:

У меня есть winform с несколькими PictureBox элементами управления на нем. У меня есть контекстное меню, которое прикреплено ко всем этим PictureBox элементам управления. У меня есть 3 пункта отправки (меню) в контекстном меню, которые должны отображаться при щелчке правой кнопкой мыши на любом из PictureBox экземпляров, и это работает нормально.

Теперь, перед появлением всплывающего окна контекстного меню, мне нужно проверить свойства того, PictureBox где оно нажато, чтобы включить или отключить определенные подменю.

  private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
    {

    }
  

Я вижу это событие, но sender объект является ссылкой на ContextMenu . Для этого мне нужен PictureBox параметр.

Ответ №1:

Я этого не пробовал, но вы, возможно, захотите взглянуть на SourceControl свойство ContextMenu ( sender ).

В нем должна быть ссылка на фактический элемент управления, для ContextMenu которого он отображается.

На странице MSDN, на которую я ссылался, также есть пример, который, я думаю, будет полезен. Хотя они прослушивают Popup событие, но оно должно быть таким же.

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

1. спасибо, это работает, я попробовал contextMenuStrip1. SourceControl в том же случае, когда он работает