2013-04-22 82 views
1

我想在C#中創建一個應用程序 - visual studio 2010.這個應用程序就像提醒一樣。您將註釋放入文本框中,並使用DateTimePicker來選擇何時需要提醒注意事項。
問題是我不知道如何做到這一點。時間提醒應用程序C#

我選擇日期和時間從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"); 
    } 
} 
+0

你能幫我看看我的代碼中的問題在哪裏嗎? ' private DateTime theDay; private void button6_Click(object sender,EventArgs e) DateTime theDay = dateTimePicker1.Value; pictureBox3.Visible = true; MessageBox.Show(「data saved」); timer1.Enabled = true; } 私人無效timer1_Tick(對象發件人,EventArgs的) { 如果(DateTime.Now。CompareTo(theDay)> 0)//檢查現在是否在日期之後 theDay = DateTime.MaxValue; timer1.Enabled = false; MessageBox.Show(「Reminder」)' – Tlapy 2013-04-22 19:30:53

回答

0

東西,你可以只是比較:

if(dateTimePicker1.Value==DateTime.Now) 

兩個都是日期時間。

但上面的代碼有一個問題。它將時間與毫秒進行比較,可能永遠不會相同。所以,你可以像

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

更改您的代碼的東西(DateTime1 - DATETIME2)是時間跨度更abote這個類是MSDN

+1

定時器必須在完全相同的毫秒內打勾才能工作。非常糟糕的解決方案 – x4rf41 2013-04-22 14:02:52

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"); 
    } 
} 

完全匹配(==)不推薦使用日期,因爲計時器可能跳過確切的時間,並且它永遠不會成立。

編輯:我是作儀走錯了路,它應該是正確的,現在

+0

謝謝,這似乎正是我需要的。但是我有一個問題,也許很愚蠢仍然.. 當我使用這個: 私人無效的button1_Click(對象發件人,EventArgs的){ 日期時間 = theDay dateTimePicker1.Value;} 私人無效timer1_Tick(對象發件人,EventArgs e) if(DateTime.Now.CompareTo(theDay)> 0) theDay = DateTime.MaxValue; MessageBox.Show(「Reminder」); } 顯示錯誤:名稱'theDay'在當前上下文中不存在。我認爲我必須在其他地方定義天...可以請解釋我在哪裏以及如何?在公共部分班? – Tlapy 2013-04-22 15:48:18

0

如果你想建立一個提醒應用,而不是使用日期時間的比較,你會過得更好使用開源調度像Quartz.NET

它的使用方法非常簡單,Quartz.NET tutorials都非常優秀。

你只需要定義所需的每個提醒的CRON Triggers和Quartz.NET將處理時發生觸發擊發事件的責任。在事件中,你可以做你希望的任何行動像發送郵件,設定值等..

約石英的最好的事情是,因爲它的調度器,你甚至可以很輕鬆地安排定期提醒。我已經成功地在三種官方產品中使用它,沒有任何麻煩。