2011-04-08 4 views
2

나는 아주 간단한 질문이 있지만 해결책을 찾지 못했습니다. 작업 트레이에있는 응용 프로그램이 있습니다. 사용자가 트레이 아이콘을 오른쪽 클릭하면 프로그램은 MenuItem 메뉴를 표시합니다. 내 MenuItem 중 일부가 마우스 위에 올려 졌을 때 코드를 실행하고 싶습니다.C# WinForms trayapp MenuItem 마우스를 가리키면 감지

이것이 가능합니까?

나를 올바른 방향으로 보낼 수 있습니까?

내가

 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

**입니다. 버튼이 보이지 않습니다. –

+0

@cody 사과드립니다. 저는 닷넷 개발자가 아니며 .Net 컨트롤 "Button"과 충돌하는 단어 선택에 대해 생각하지 않았습니다. 그에 따라 내 게시물을 편집 할 것입니다. – bdeetz

+0

bdeetz, 앱에서 NotifyIcon 컨트롤을 사용하고 있습니까? – Unknown

답변

1

NotifyIcon 사용하고 각 메뉴 항목의 MouseHover 또는 MouseEnterMouseLeave 이벤트를 사용해야합니다.

업데이트 : 예, NotifyIcon 컨트롤에는 ContextMenuStrip이라는 속성이 있습니다. 메뉴를 표시하려면 ContextMenuStrip 컨트롤을 만들어야합니다. ToolStripMenuItems 형식의 항목이 포함되어 있습니다. 간단한 프로토 타입을 만들려고했는데 - MouseHover 잘 작동합니다.

+0

MenuItems는 해당 이벤트를 노출하지 않습니다. – stuartd

+0

적어도 [MSDN에 따라] 이러한 이벤트가 존재한다고 생각하지 않습니다. (http://msdn.microsoft.com/en-us/library/system.windows.forms.menuitem .aspx) – Justin

+0

예, ContextMenuStrips와 ContextMenuItems를 notifyIcon 컨트롤과 함께 사용하고 있습니다. 불행히도이 컨트롤은 Select 이벤트를 제공하지 않습니다.) – Unknown

1

은 당신이 할 수 있습니다 생각의 MenuItem의 Select event :

사용자가 메뉴 항목 위에 마우스 포인터를 배치 할 때이 이벤트는 일반적으로 발생합니다. 이벤트는 사용자가 키보드를 사용하여 항목을 화살표 키로 스크롤하여 키보드를 사용하여 메뉴를 강조 표시 할 때 발생합니다.

+1

Downvoter - 질문이 MenuItem이 사용됨을 나타내는대로 대답이 정확합니다. 동의하지 않는 경우 이유를 설명하는 설명을 남기면 도움이됩니다 (물론 AC가 아닌 경우) – stuartd

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(); 
     } 
    } 
} 
관련 문제