2011-04-08 91 views
2

我有一個相當簡單的問題,但我無法找到解決方案。我有一個駐留在任務欄中的應用程序。當用戶右鍵單擊托盤圖標時,程序將顯示MenuItems菜單。當我的一些MenuItems被鼠標懸停時,我想執行代碼。C#WinForms trayapp MenuItem鼠標懸停檢測

這可能嗎?

你能把我送往正確的方向嗎?

我使用的NotifyIcon

 trayMenu = new ContextMenu(); 
     trayMenu.MenuItems.Add("Exit", OnExit); 

     trayIcon = new NotifyIcon(); 
     trayIcon.Text = "blah"; 

     trayIcon.Icon = new Icon("favicon.ico", 40, 40); 
     trayIcon.ContextMenu = trayMenu; 
     trayIcon.Visible = true; 
+0

**什麼按鈕?**你剛纔描述包含菜單項的菜單。我在任何地方都看不到按鈕。 – 2011-04-08 14:32:24

+0

@cody我的歉意。我通常不是.Net開發人員,也不會考慮與.Net控件「按鈕」相沖突的字詞選擇。我將相應地編輯我的帖子。 – bdeetz 2011-04-08 15:07:01

+0

bdeetz,你在你的應用程序中使用NotifyIcon控件嗎? – Unknown 2011-04-08 15:26:17

回答

1

你將不得不使用每個菜單項的MouseHoverMouseEnterMouseLeave事件。

更新: 是的,NotifyIcon控件有一個名爲ContextMenuStrip的屬性。您將不得不創建ContextMenuStrip控件來顯示菜單。它包含ToolStripMenuItems類型的項目。我試圖創建一個簡單的原型 - MouseHover工程就好了。

+0

MenuItems不公開這些事件 – stuartd 2011-04-08 15:18:20

+0

我不認爲這些事件存在 - 至少[根據MSDN](http://msdn.microsoft.com/en-us/library/system.windows.forms.menuitem .aspx) – Justin 2011-04-08 15:19:20

+0

是的,但你正在使用ContextMenuStrips與ContextMenuItems與notifyIcon控件,不幸的是這個控件不提供任何選擇事件;) – Unknown 2011-04-08 15:22:17

1

我想你可能想要的菜單項的Select event

時 用戶將鼠標指針 菜單項此事件通常升高。當用戶使用鍵盤通過使用箭頭鍵滾動 到菜單項來突出顯示菜單 項目時,該事件也可以是 。

+1

Downvoter - 回答正確的問題指定使用MenuItems。如果你不同意,留下評論解釋爲什麼會有幫助(當然,除非你是AC) – stuartd 2011-04-08 16:14:40

0

這裏是您的解決方案https://www.codeproject.com/Tips/254525/Automatically-display-Menu-on-Hover

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.menuStrip1.Items[0].MouseHover += new EventHandler(Form1_MouseHover); 
} 


void Form1_MouseHover(object sender, EventArgs e) 
{ 
    if (sender is ToolStripDropDownItem) 
    { 
     ToolStripDropDownItem item = sender as ToolStripDropDownItem; 
     if (item.HasDropDownItems && !item.DropDown.Visible) 
     { 
      item.ShowDropDown(); 
     } 
    } 
}