我需要在执行某些操作后显示左侧和右侧单击的通知图标上下文菜单的上下文菜单,而不是在点击后立即显示。
它非常适用于左键单击:
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
。有没有办法用我的事件处理程序覆盖它?
答案 0 :(得分:2)
有两种选择。
选项A:不要将上下文菜单分配给this.ContextMenuStrip。手动打开上下文菜单。请注意,strip.Top和strip.Left必须是绝对屏幕坐标。
选项B:如果右键单击并重新分配OnMouseUp,则取消分配this.ContextMenuStrip OnMouseDown。请参阅此example。