2016-05-08 2 views
-3

1日中に特定の時間にテキストボックスに文章を表示したいとします。例えば: 5:30、
Textbox1.text = "朝食"
で7:30
textbox1.text =でタイマーがちょうどその時開始することができます
など 、 "学校のために残して"アプリケーションは起動されますが、手動で変更することなく、毎週同じ時刻に出力する必要があるため、現地時間や一定​​時間を参照する必要があります。 System.DateTime.Today.Now.ToString("HH:mm")は、特定の時刻にvb.netのラベルにメッセージを表示します。

TimerTickイベントを発生させるたびに、次の値を確認...

+2

もちろん、アプリケーション起動時に起動する「Timer」でもかまいません。 'Interval'は、' Timer'がTickイベントを発生させたときに制御します。適切な値に設定するだけです。アプリケーションが2.37 PMで開始し、5.00 PMを表示するメッセージが必要な場合は、2時間23分で「間隔」をミリ秒数に設定します。それは簡単な数学です。 – jmcilhinney

+0

プログラムが自動的に必要なので、プログラムを開くたびに、時間を変更することは自動ではありません。とにかくありがとうございます –

+1

"自動"と "魔法"が混乱しています。自動とは、ユーザーの介入なしにコードが実行することを意味します。あなたが望むことをするコードを書くと、あなたが望むものが自動的に起こります。私の前のコメントで私が言ったことを正確に実証するために私の答えを見てください。 – jmcilhinney

答えて

1

にテキストを変更し、それを行うための適切な方法は、このようなものです:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    'Set the interval at startup. 
    Timer1.Interval = CInt(GetNextNotificationTime().Subtract(Date.Now).TotalMilliseconds) 
End Sub 

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
    'Set the interval at each notification. 
    Timer1.Interval = CInt(GetNextNotificationTime().Subtract(Date.Now).TotalMilliseconds) 

    'Not sure whether this is required when the Interval changes or not. 
    Timer1.Stop() 
    Timer1.Start() 

    'Do the work here. 
End Sub 

Private Function GetNextNotificationTime() As Date 
    '... 
End Function 

あなたはGetNextNotificationTime方法は、通知時間があるかに依存していることを実装する方法保存される。 Timerは、通知の期限が到来する場合にのみTickになります。

+0

これは受け入れられた答えでなければなりません。エレガントなコードを書くための功績。私はそれが完全な過労だとも思う:-) – Jeroen

0

は、あなたはまだTimerでこれを行うことができますし、任意の数学を行う必要はありません。それはあなたの設定時間に等しい場合、TextBox

+0

上記のコードをマルチスレッドで記述する必要があるため、プログラムは他の機能を提供することができ、必要に応じてメッセージを表示するための事前定義された時間を使って、 – Ravi

+1

いいえ、あなたはしません。有効化されたタイマーは、自身のスレッドですでに実行されています。時間をチェックしてラベルを更新するロジックは、Timer.Tickイベントハンドラに書き込まれるか、Ti'mer.Tickハンドラから呼び出されるサブに書き込まれる方が良いでしょう。 –

+0

ええと@DavidWilsonは言った:-) – Jeroen

関連する問題