gpt4 book ai didi

c# - NotifyIcon 单击事件未触发

转载 作者:可可西里 更新时间:2023-11-01 11:48:00 27 4
gpt4 key购买 nike

class MainProgram
{
static NotifyIcon _notifyIcon;

public static void Main()
{
_notifyIcon = new NotifyIcon();
_notifyIcon.Icon = new Icon("icon.ico");
_notifyIcon.Click += NotifyIconInteracted;
_notifyIcon.Visible = true;

while(true)
{
Thread.Sleep(1000);
}
}

static void NotifyIconInteracted(object sender, EventArgs e)
{
throw new NotImplementedException();
}
}

以上是一个最小的例子。由于某种原因,从未调用 NotifyIconInteracted 方法。通知图标出现,我多次左键/右键单击它,但事件不会触发。

最佳答案

如果您只是进行定期检查,为什么不使用计时器而不是 while 循环呢?使用计时器不会像 while() 循环那样锁定程序。

using System;
using System.Timers;
using System.Windows.Forms;

namespace SONotify
{
class Program
{
private static System.Timers.Timer _timer;
private static NotifyIcon _notify;

static void Main(string[] args)
{
Console.WriteLine("Press enter to exit");
SetIcon();
SetTimer();

Application.Run();

Console.ReadLine();

_timer.Stop();
_timer.Dispose();
}

private static void SetIcon()
{
_notify = new NotifyIcon();
_notify.Icon = new System.Drawing.Icon("icon.ico");
_notify.Click += NotifyIconInteracted;
_notify.Visible = true;
}

private static void SetTimer()
{
_timer = new System.Timers.Timer(2000); //Timer goes off every 2 seconds
_timer.Elapsed += Timer_Elapsed;
_timer.AutoReset = true;
_timer.Enabled = true;
}

private static void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
Console.WriteLine("Timer fired");
}

private static void NotifyIconInteracted(object sender, EventArgs e)
{
Console.WriteLine("Icon clicked");
}
}
}

关于c# - NotifyIcon 单击事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39130681/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com