gpt4 book ai didi

c# - 如果您在通知图标上按住 Lt-Click 或 Rt-Click,如何获得不同的上下文菜单?

转载 作者:太空狗 更新时间:2023-10-29 21:30:50 25 4
gpt4 key购买 nike

我有一个基于系统托盘的应用程序。如果您右键单击它,我有一个很好的上下文菜单,但是如果您左键单击它,我希望显示一个不同的上下文菜单。现在我用

显示不同的菜单
private void niTrayIcon_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
cmsTrayLeftClick.Show(Cursor.Position);
}

}

这会使菜单显示出来,但单击菜单不会使其消失,使菜单消失的唯一方法是单击某个项目或 rt 单击托盘图标。

我也想出了这个 hack,但确实感觉这是正确的方法。

private void niTrayIcon_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
niTrayIcon.ContextMenuStrip = cmsTrayLeftClick;
MethodInfo mi = typeof(NotifyIcon).GetMethod("ShowContextMenu", BindingFlags.Instance | BindingFlags.NonPublic);
mi.Invoke(niTrayIcon, null);
niTrayIcon.ContextMenuStrip = cmsTrayRtClick;
}
}

这是正确的做法还是有更优雅的方式?

最佳答案

由于没有其他人发布过可行的方法,我想正确的做法是

private void niTrayIcon_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
niTrayIcon.ContextMenuStrip = cmsTrayLeftClick;
MethodInfo mi = typeof(NotifyIcon).GetMethod("ShowContextMenu", BindingFlags.Instance | BindingFlags.NonPublic);
mi.Invoke(niTrayIcon, null);
niTrayIcon.ContextMenuStrip = cmsTrayRtClick;
}
}

关于c# - 如果您在通知图标上按住 Lt-Click 或 Rt-Click,如何获得不同的上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3780607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com