1

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

2 に答える 2

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

日付の完全一致 (==) はお勧めしません。タイマーが正確な時間を飛び越える可能性があり、決して真にならないからです。

編集:私の比較は間違った方法でした。今は正しいはずです

于 2013-04-22T14:02:03.107 に答える
0

比較することができます:

if(dateTimePicker1.Value==DateTime.Now)

どちらも日時です。

しかし、上記のコードには 1 つの問題があります。時間をミリ秒と比較しますが、おそらく同じになることはありません。したがって、コードを次のように変更できます

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

(DateTime1 - DateTime2) は、このクラスがMSDNにあるよりも前のタイムスパンです

于 2013-04-22T14:01:14.567 に答える