NotifyIconContextMenuandtoomanyclickevents我正在使用NotifyIcon类在任务栏中显示一个图标。该图标执行2个功能-当用户单击左键时它应该显示一个窗口,当用户单击右键时它应该显示上下文菜单。这工作正常,除了在用户单击上下文菜单中的选项后出现的窗口。这是我的代码:contextMenuItems=newList();contextMenuItems.Add(newMenuItem("函数A",newEventHandler(a_Clicked)));contextMenuItems.Add(新菜单项("-"));contextMenuItems.Add(newMenuItem("函数B",newEventHandler(b_Clicked)));trayIcon=newSystem.Windows.Forms.NotifyIcon();trayIcon.MouseClick+=newMouseEventHandler(trayIcon_IconClicked);trayIcon.Icon=newIcon(GetType(),"Icon.ico");trayIcon.ContextMenu=contextMenu;trayIcon.Visible=true;问题是当用户选择“functionA”或“functionB”时我的trayIcon_IconClicked事件被触发。为什么?谢谢,J通过将上下文菜单分配给NotifyIcon控件,它会自动捕获右键单击并在那里打开分配的上下文菜单。如果您想在实际显示上下文菜单之前执行一些逻辑,请将委托分配给contextMenu.Popup事件。...contextMenu.Popup+=newEventHandler(contextMenu_Popup);...privatevoidtrayIcon_IconClicked(objectsender,MouseEventArgse){if(e.Button==MouseButtons.Left){//在这里做点什么。}/*仅当您未设置trayIcon.ContextMenu属性时才执行此操作,否则使用contextMenu.Popup事件。elseif(e.Button==MouseButtons.Right){//Show使用分配的控件客户端位置来设置位置,//所以必须从屏幕到客户端坐标。上下文菜单。显示(这个,这个。PointToClient(光标。位置));}*/}privatevoidcontextMenu_Popup(objectsender,EventArgse){//在显示上下文菜单之前做一些事情。我猜窗口弹出的原因是您打开的上下文菜单使用NotifyIcon作为目标控件,因此当您单击它时,它会运行您分配给NotifyIcon的单击处理程序。编辑:要考虑的另一个选择是使用ContextMenuStrip。NotifyIcon也有一个ContextMenuStrip属性,它似乎有更多与之相关的功能(注意我可以做更多,可编程的)。如果由于某种原因某些东西不起作用,可能想试一试。我遇到了同样的问题。将NotifyIcon的ContextMenu更改为ContextMenuStrip并没有解决问题(实际上,当我更改ContextMenu时,Click事件是在显示ContextMenuStrip时发生的,而不是在用户实际单击其中一项时发生的。我对这个问题的解决方案是更改使用的事件以显示左键单击上下文菜单。我没有使用Click事件处理程序,而是使用MouseUp并检查单击了哪个MouseButton。构建NotifyIcon(notifyContext是一个System.Windows.Forms.ContextMenuStrip)以上是C#学习教程:NotifyIconContextMenu分享的所有内容以及太多的点击事件,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——m_notifyIcon.MouseUp+=newForms.MouseEventHandler(m_notifyIcon_MouseUp);m_notifyIcon.ContextMenuStrip=notifyContext;处理左键单击事件并显示主上下文菜单:mainContext.IsOpen;}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
