【发布时间】:2012-01-24 00:40:30
【问题描述】:
我正在开发一个插件(使用System.ComponentModel.Composition),以便应用程序在 Windows UI 的通知区域中放置一个图标。
trayMenu.MenuItems.Clear();
// Create context menu items
foreach( IJob job in jobs ) {
MenuItem menuItem = new MenuItem( job.Name ) {Tag = job};
menuItem.Click += MenuItemClick;
trayMenu.MenuItems.Add( menuItem );
}
private void MenuItemClick( object sender, EventArgs e ) {
// ...
}
现在,当我单击该图标的上下文菜单中的某个项目时,Click 处理程序不会被调用。
有趣的是,当我再次右键单击该图标(单击菜单项后)时,将调用先前单击的 MenuItem 的 Click 处理程序。左键单击或悬停在图标上不会触发此步骤。
发生了什么事?
更新:我强烈感觉我的问题与this question 有关。但我仍在试图弄清楚如何将其应用于我的插件/应用程序。
【问题讨论】:
-
你有没有做任何不寻常的事情,比如自己显示上下文菜单?在菜单外单击是否会导致其消失?
-
@Hans Passant:不,我不认为我在做任何不寻常的事情。菜单打开由 NotifyIcon 处理。在菜单外点击会导致它消失(如预期的那样)。
标签: c# .net windows composition system.componentmodel