C# 分离通知图标单击和项目菜单单击事件

C# 分离通知图标单击和项目菜单单击事件,c#,events,taskbar,notifyicon,C#,Events,Taskbar,Notifyicon,我有一个主要在任务栏中运行的应用程序,它的图标可以左键单击以打开Windows窗体。 NotifyIcon还有几个菜单项,可以通过右键单击来访问,每个菜单项都有自己的单击事件来提供功能 private void menuItem4_Click(object Sender, EventArgs e) { if (programEnabled == false) { programEnabled = true; Console.WriteLine("E

我有一个主要在任务栏中运行的应用程序,它的图标可以左键单击以打开Windows窗体。 NotifyIcon还有几个菜单项,可以通过右键单击来访问,每个菜单项都有自己的单击事件来提供功能

private void menuItem4_Click(object Sender, EventArgs e)
{
    if (programEnabled == false)
    {
        programEnabled = true;
        Console.WriteLine("Enabled!");
    }
    else
    {
        programEnabled = false;
        Console.WriteLine("Disabled!");
    }
}

//Icon clicked!
private void notifyIcon1_MouseClick(object Sender, EventArgs e)
{
    //Reopen the form
    Form f = new TemperForm();

}
但是,每次激活MenuItem click事件时,NotifyIcon\u click也会运行,我需要该事件来打开Windows窗体。我不希望每次单击任何菜单项时也运行我希望在单击图标时运行的代码

如何在每次单击菜单项时都不运行NotifyIcon\u Click事件的情况下仍然使用该事件?
我已经干了好几个小时了,这简直把我逼疯了

我认为在代码中使用这些事件处理程序查看您订阅的事件会很有用。很抱歉,我不太熟悉事件的内部工作原理,我如何使用它来更改事件,使其仅在满足某个条件(例如菜单未打开)时运行?MouseClick事件处理程序不准确,它的第二个参数是MouseEventArgs。现在检查e.Button属性变得很容易。我已经纠正了这一点,但不幸的是,检查按下了什么按钮在这种情况下没有帮助。我希望能够用鼠标左键单击图标打开表单,然后用鼠标左键单击选项来选择它们。我需要另一种方法来区分用户是点击图标还是菜单项我一定是做错了,我无法想象每个人都会经历这样的麻烦,因为这似乎是一件很容易做到的事情。我不明白为什么NotifyIcon\u Click会在一开始单击菜单选项时运行我认为使用代码中的这些事件处理程序查看您订阅的事件会很有用很抱歉我不太熟悉事件的内部工作原理,如何使用此选项更改事件,使其仅在满足条件(如菜单未打开)时运行?MouseClick事件处理程序不准确,其第二个参数为MouseEventArgs。现在检查e.Button属性变得很容易。我已经纠正了这一点,但不幸的是,检查按下了什么按钮在这种情况下没有帮助。我希望能够用鼠标左键单击图标打开表单,然后用鼠标左键单击选项来选择它们。我需要另一种方法来区分用户是点击图标还是菜单项我一定是做错了,我无法想象每个人都会经历这样的麻烦,因为这似乎是一件很容易做到的事情。我不明白为什么在一开始单击菜单选项时,NotifyIcon\u Click甚至会运行