Search code examples
c#.neteventsclicknotifyicon

Slow reaction of MouseClick event for NotifyIcon


I noticed strange behaviour of left-click event for NotifyIcon.

I have a code like this:

private void notifyIcon2_MouseClick(object sender, MouseEventArgs e)
{
   if (e.Button == System.Windows.Forms.MouseButtons.Left)
      {
            Console.WriteLine("Hello!");
      }
}

The problem is that upon clicking notifyicon in tray string "Hello" is not shown immediately, it takes about 0.5 seconds (half of a second) to react. That is why I can not add some sort of variable-counter for each click of the icon - it just reacts too slow to catch all clicks and increment my variable.

Is there any solution to the problem? I tried MouseClick, MouseDown, MouseUp and Click events, and all of them have such a slow reaction.

Thank you!


Solution

  • I think it is related to this little comment they make here (I know this is not this NotifyIcon).

    Note that the LeftClickCommand fires after a short delay (as opposite to the DoubleClickCommand that fires immediately). This is because there is a time span between a first click and a second click for the OS to consider the mouse action a double-click. The NotifyIcon is smart enough to wait this period in order to make sure the LeftClickCommand is only fired if the user does not click a second time within that period.

    I tried it and this delay is present on the Form itself as well. This is just how this event works.