我正在使用NotifyIcon
類在任務欄中顯示一個圖標。該圖標執行2個功能 - 當用戶單擊左鍵時它應該顯示一個窗口,當用戶單擊右鍵時它應該顯示上下文菜單。除了用戶在上下文菜單中單擊某個選項後顯示的窗口外,此功能仍可正常工作。這裏是我的代碼:NotifyIcon ContextMenu和太多點擊事件
contextMenuItems = new List<MenuItem>();
contextMenuItems.Add(new MenuItem("Function A", new EventHandler(a_Clicked)));
contextMenuItems.Add(new MenuItem("-"));
contextMenuItems.Add(new MenuItem("Function B", new EventHandler(b_Clicked)));
trayIcon = new System.Windows.Forms.NotifyIcon();
trayIcon.MouseClick += new MouseEventHandler(trayIcon_IconClicked);
trayIcon.Icon = new Icon(GetType(), "Icon.ico");
trayIcon.ContextMenu = contextMenu;
trayIcon.Visible = true;
的問題是,當用戶選擇「功能A」或「功能B」我trayIcon_IconClicked
事件。爲什麼會這樣呢?
感謝, Ĵ
謝謝,有沒有辦法sto使用NotifyIcon作爲目標控件?或者甚至可以手動彈出菜單?我已經嘗試了ContextMenu.Show(),但它需要一個控件作爲參數,而且似乎不會觸發Popup事件。 – JWood
您是否正在處理trayIcon_IconClicked事件的點擊處理程序中的右鍵單擊?如果是這樣,不要。設置ContextMenu屬性會自動處理任何分配給上下文菜單的控件的右鍵單擊事件,因此您不需要再處理它。這就是爲什麼它在trayIcon_IconClicked事件中被省略,因爲你只是複製事件。嘗試一下,讓我知道。 – SPFiredrake
我沒有手動處理點擊,我設置了ContextMenu屬性,但是當用戶從上下文菜單中選擇一個項目時,它給出了觸發trayIcon_IconClicked事件的行爲。上面的例子不起作用,因爲「this」是一個Application對象。我將嘗試使用ContextMenuStrip,並查看是否會給出更好的結果。 – JWood