0

我需要在执行某些操作后而不是在单击后立即显示通知图标上下文菜单的上下文菜单,以便左键和右键单击。

它非常适合左键单击:

sysTrayIcon.MouseClick += OnSysTrayClicked;

private static void OnSysTrayClicked(Object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        PerformActions();
        MethodInfo oMethodInfo = typeof(NotifyIcon).GetMethod("ShowContextMenu", BindingFlags.Instance | BindingFlags.NonPublic);
        oMethodInfo.Invoke(sysTrayIcon, null);
    }
}

但是右键单击仍然会自动处理,并且ContextMenuStrip在右键单击时会显示关联。有没有办法用我的事件处理程序覆盖它?

4

1 回答 1

2

有两种选择。

选项 A:不要将上下文菜单分配给 this.ContextMenuStrip。随时手动打开上下文菜单。请注意,strip.Top 和 strip.Left 必须是绝对屏幕坐标。

选项 B:如果鼠标右键,则取消分配 this.ContextMenuStrip OnMouseDown 并重新分配 OnMouseUp。请参阅此示例

于 2013-01-15T10:37:59.377 回答