Dynamically disable a specific context menu item

I added 4 menus to the context menu. If you click when starting a context menu item, how do I disable this specific ("Start") menu item?

 ContextMenu conMenu1 = new ContextMenu(); public Form1() { InitializeComponent(); conMenu1.MenuItems.Add("Start", new System.EventHandler(this.Start_Click)); conMenu1.MenuItems.Add("Pause", new System.EventHandler(this.Pause_Click)); conMenu1.MenuItems.Add("Resume", new System.EventHandler(this.Resume_Click)); conMenu1.MenuItems.Add("Stop", new System.EventHandler(this.Stop_Click)); } private void Start_Click(object sender, EventArgs e) { // Functionalities to disable start context menu item } 
+9
c # winforms
source share
2 answers

You can do it. Handle the ContextMenu.Opening event

 private void conMenu1_Opening(object sender, CancelEventArgs e) { conMenu1.Items[0].Enabled= false; } 
+17
source share

Use a PopUp event such as

declaration

 var trayMenu = new ContextMenu(); trayMenu.Popup += MenuOpening; trayMenu.MenuItems.Add(...); ... 

Subscription Event

 private void MenuOpening(object sender, EventArgs e) { var cm = sender as ContextMenu; if (cm != null) cm.MenuItems[0].Enabled = false; } 
0
source share

All Articles