时间提醒申请C#

时间:2013-04-22 13:56:17

标签: c# timer alarm

我正在尝试在C#中创建一个应用程序 - visual studio 2010.这个应用程序类似于提醒。您将注释放入文本框并使用DateTimePicker选择何时需要提醒您注意事项。
问题是我不知道该怎么做。

我从DatetimePicker中选择了日期和时间:

dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = "dd/MM/yyyy HH:mm:ss";

现在我需要将datetimePicker的时间与当前日期和时间进行比较,如果值相同则显示带有一些文本的消息按钮。

我不确定我是否可以使用计时器以及如何比较这些值?这样的事情: - )

string timese = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
string theDay = dateTimePicker1.Value.ToShortDateString();

private void timer1_Tick(object sender, EventArgs e)
{
    if (theDay == theDay2)
    {
        MessageBox.Show ("Reminder");
    }
}

3 个答案:

答案 0 :(得分:2)

首先不要使用字符串:

DateTime theDay = dateTimePicker1.Value;

private void timer1_Tick(object sender, EventArgs e)
{
    if (DateTime.Now.CompareTo(theDay) > 0 ) // checks if now is after theDay
    {
        theDay = DateTime.MaxValue;
        // makes sure there wont be multiple MessageBox due to event queuing
        // you could also just stop the timer here
        MessageBox.Show ("Reminder");
    }
}

建议不要使用日期的完全匹配(==),因为计时器可能跳过确切的时间而且它永远不会成立。

编辑:我的比较是错误的,现在应该是正确的

答案 1 :(得分:0)

你可以比较一下:

if(dateTimePicker1.Value==DateTime.Now)

两者都是日期时间。

但上面的代码存在一个问题。它将时间与毫秒进行比较,可能永远不会相同。因此,您可以将代码更改为

if(dateTimePicker1.Value-DateTime.Now).TotalSeconds<2)

(DateTime1 - DateTime2)是这个类在MSDN

上的时间更长

答案 2 :(得分:0)

如果您想构建提醒应用程序而不是使用日期时间比较,最好使用像Quartz.NET这样的开源计划程序。

使用非常简单,Quartz.NET tutorials非常好。

您只需要定义每个提醒所需的CRON Triggers,Quartz.NET将负责在触发发生时触发事件。如果您可以执行任何操作,例如发送邮件,设置值等等......

Quartz的最佳之处在于,由于它是一个调度程序,您甚至可以非常轻松地安排定期提醒。我已经成功地在三种官方产品中使用它而没有任何麻烦。