使用 NotifyIcon 和 Timer C# 的提醒
Reminder using NotifyIcon and Timer C#
我写了一些代码来创建提醒。它应该在上午 10 点时通过通知警告我。为了使这成为可能,我创建了一个 DateTime 对象作为 DateTime.Now 来获取本地时间,并且我使用了一个计时器来检查每一分钟是否是我想要收到警告的同一时间。问题是我的应用程序仅在加载表单时通知我,但当时间到了并且应用程序已经 运行 时它不会通知我。
我会把下面的代码留给你。提前致谢。
public partial class Form1 : Form
{
NotifyIcon notify;
DateTime now;
public Form1()
{
InitializeComponent();
notify = new NotifyIcon()
{
Visible = true,
Icon = Properties.Resources.icon,
BalloonTipTitle = this.Text
};
now = DateTime.Now;
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
}
private void notification()
{
while(true)
{
if (now.Hour.Equals(10) && now.Minute.Equals(30))
{
notify.BalloonTipText = "It's 10:30 am";
notify.ShowBalloonTip(3000);
timer1.Stop();
notify.Dispose();
}
}
}
private void timer1_Tick(object sender, EventArgs e)
{
notification();
}
}
从 notification
中移除 while(true)
循环。你有滴答计时器,它会定期调用 notification
- 现在你在第一次滴答后无限地检查时间。
now
必须在每个 tick 上分配,而不是在启动时分配。
:
private void notification()
{
DateTime now = DateTime.Now;
if (now.Hour == 10 && now.Minute == 30)
{
notify.BalloonTipText = "It's 10:30 am";
notify.ShowBalloonTip(3000);
timer1.Stop();
}
}
我写了一些代码来创建提醒。它应该在上午 10 点时通过通知警告我。为了使这成为可能,我创建了一个 DateTime 对象作为 DateTime.Now 来获取本地时间,并且我使用了一个计时器来检查每一分钟是否是我想要收到警告的同一时间。问题是我的应用程序仅在加载表单时通知我,但当时间到了并且应用程序已经 运行 时它不会通知我。 我会把下面的代码留给你。提前致谢。
public partial class Form1 : Form
{
NotifyIcon notify;
DateTime now;
public Form1()
{
InitializeComponent();
notify = new NotifyIcon()
{
Visible = true,
Icon = Properties.Resources.icon,
BalloonTipTitle = this.Text
};
now = DateTime.Now;
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
}
private void notification()
{
while(true)
{
if (now.Hour.Equals(10) && now.Minute.Equals(30))
{
notify.BalloonTipText = "It's 10:30 am";
notify.ShowBalloonTip(3000);
timer1.Stop();
notify.Dispose();
}
}
}
private void timer1_Tick(object sender, EventArgs e)
{
notification();
}
}
从
notification
中移除while(true)
循环。你有滴答计时器,它会定期调用notification
- 现在你在第一次滴答后无限地检查时间。now
必须在每个 tick 上分配,而不是在启动时分配。
:
private void notification()
{
DateTime now = DateTime.Now;
if (now.Hour == 10 && now.Minute == 30)
{
notify.BalloonTipText = "It's 10:30 am";
notify.ShowBalloonTip(3000);
timer1.Stop();
}
}