在C#中单击托盘图标打开菜单

9

我该如何强制在点击托盘图标时显示上下文菜单,而不仅仅是右键单击。

我尝试使用MouseClick事件,但是eventargs中的鼠标位置为x0y0。

2个回答

13
这应该可以解决你的问题:
private void notifyIcon1_Click(object sender, EventArgs e)
        {
            contextMenuStrip1.Show(Cursor.Position.X, Cursor.Position.Y);
        }

另外,如果您需要移动内容,您可以随时执行X +/- 10或其他操作。 - CodeLikeBeaker

10

我发现的一个更好的替代方法:

private void notifyIcon1_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            System.Reflection.MethodInfo mi = typeof(NotifyIcon).GetMethod("ShowContextMenu", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
            mi.Invoke(notifyIcon1, null);
        }
    }

这很有效,因为它使得左键点击的行为(位置、行为等)与右键点击完全一致。在我的代码中,我在应用程序构造函数中存储了一个对 GetMethod 调用返回的方法的私有引用,以避免在每次点击时进行反射调用。 - Mark Bell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接