Как я могу подавить событие BalloonTipClicked при нажатии на значок уведомления?

В моей форме у меня есть значок уведомления. У меня есть обработчики для Click и BalloonTipClicked, привязанные к notifyIcon. Теперь, если всплывающее окно отображается, и я нажимаю значок уведомления, срабатывает BalloonTipClicked, а после этого срабатывает Click. Я не уверен, что это задуманное поведение, но я хочу, чтобы только Click уволили, как я могу этого добиться?

private void notifyIcon1_BalloonTipClicked(object sender, EventArgs e)
{
    Console.WriteLine("notifyIcon balloontip click"); // This fires first
}

private void notifyIcon1_Click(object sender, EventArgs e)
{
    Console.WriteLine("notifyIcon click"); // This fires after balloontipclick
}

notifyIcon


person A1rPun    schedule 13.11.2016    source источник
comment
@RezaAghaei Интересно .. нужно ли мне указывать дополнительные сведения о моей настройке разработчика?   -  person A1rPun    schedule 13.11.2016
comment
Я вижу это, конкретная ошибка Win10. Версия может иметь значение, у меня 1607. Я получаю BalloonTipClicked при нажатии на значок, но не событие Clicked. Так что рекомендация в ответе не сработает. Ничто не поможет обойти это, все, что вы можете сделать, это опубликовать сообщение об ошибке на connect.microsoft.com. Если повезет, они передадут его группе Windows.   -  person Hans Passant    schedule 13.11.2016
comment
@HansPassant Спасибо за ваш ответ, на моем личном win10 VS2k15 настройте как воздушный шар, так и нажмите DO fire. Я уверен, что это происходит и при работе с несколькими настройками win10. Это может зависеть от версии, и я попытаю удачу @ connect.microsoft.com.   -  person A1rPun    schedule 13.11.2016
comment
@RezaAghaei Я создал минимальный, полный и проверяемый пример @ github.   -  person A1rPun    schedule 13.11.2016
comment
@A1rPun Я могу подтвердить проблему с WIN8.1.   -  person Reza Aghaei    schedule 14.11.2016


Ответы (1)


Это не лучшая практика, но вы можете добавить логическую переменную. И в событии notifyicon.mousehover установите для этой переменной значение false. И на baloontipclick проверьте, является ли эта переменная ложной, выйдите из подпрограммы, иначе подпрограмма будет выполнена

person Hadi    schedule 13.11.2016
comment
Спасибо за ответ, я надеюсь, что есть более чистое решение, но в противном случае я всегда мог бы найти обходной путь. - person A1rPun; 13.11.2016