Системный трей notifyIcon не принимает событие левого клика - PullRequest
3 голосов
/ 12 января 2010

Я создаю приложение только для System-Tray. Несколько сложнее иметь иконку без основной формы, но с помощью предыдущих тем в StackOverflow я решил это. Правый щелчок работает нормально, я связался в контекстном меню и т. Д.

У меня проблемы с левым кликом. Насколько я могу судить, событие notifyIcon1_Click вообще не запускается.

    private void notifyIcon1_Click(object sender, EventArgs e)
    {
        Debug.WriteLine("Does it work here?");

        if (e.Equals(MouseButtons.Left))
        {
            Debug.WriteLine("It worked!");
        }
    }

Ни одна из этих строк отладки не выводится, точки останова в этом событии не останавливают программу и т. Д.

Я делаю это неправильно? Каким должен быть мой следующий шаг? Я кодирую это в C #, используя Windows 7, если это вообще имеет значение для поведения панели задач.

Ответы [ 2 ]

7 голосов
/ 12 января 2010

Если вы хотите определить щелчок левой или правой кнопкой мыши, подключите MouseClick вместо щелчка.

Таким образом, вы получаете такую ​​подпись:

private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
    if(e.Button == MouseButtons.Left)
        //Do the awesome left clickness
    else if (e.Button == MouseButtons.Right)
        //Do the wickedy right clickness
    else
        //Some other button from the enum :)
}
0 голосов
/ 24 марта 2019

Другой ответ не ясен, что вам нужно событие MouseClick вместо Click.

notifyIcon.MouseClick += MyClickHandler;

Тогда ваша функция обработчика будет работать нормально.

void MyClickHandler(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        Console.WriteLine("Left click!");
    }
}
...