Я установил форму невидимой при деактивации, а событие щелчка NotifyIcon как переключатель видимости.Если я щелкну NotifyIcon, когда форма станет видимой, форма будет скрыта, а затем быстро обнаружена, поскольку событие щелчка NotifyIcon сработало позже, чем событие деактивированной формы.Как я могу справиться с этим?
Код проблемы:
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
if (!Visible)
{
Visible = true;
}
}
private void Form1_Deactivate(object sender, EventArgs e)
{
Visible = false;
}
Теперь я использую таймер, чтобы предотвратить быстрые изменения, но это ужасно:
private readonly Timer _timer = new Timer(200);
private bool _canChangeVisible = true;
В конструкторе:
_timer.Elapsed += (sender, args) =>
{
_canChangeVisible = true;
_timer.Stop();
};
Обработчик событий:
private void Form1_Deactivate(object sender, EventArgs e)
{
if (Visible)
{
_canChangeVisible = false;
_timer.Start();
Visible = false;
}
}
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
if (_canChangeVisible && e.Button == MouseButtons.Left)
{
Visible = !Visible;
}
}