C#の開発環境もVSCodeで (Timer1の代わり)
Back
Alt+HOME
VSCodeにはツールボックスが無くクロックモジュールをフォームにドラッグ&ドロップというわけに行かない(らしい)。そこでChatGPT先生に聞いたところサンプルを提示してくれた。当方の事情に合わせて改装出来たので備忘録
Visual Studio IDEから移行してきたフォームのコードにTimer1の記述が有った。
タイマーのセットアップにおける記述を合わせてやれば、全て書き直す必要は無かったかも知れない。
この点については後日テストすることとした。
タイマーをセットアップする(1000ミリ秒)
using System.Timers;
// Timerのセット
public void TimerInit()
{
// タイマーの設定(1000ミリ秒)
aTimer = new System.Timers.Timer(1000);
// タイマーイベントの設定
aTimer.Elapsed += OnTimeEvent;
// タイマーの自動リセットを有効にする
aTimer.AutoReset = true;
// タイマーを開始
aTimer.Enabled = true;
}
これが、フォームエディターが有る Visual Studio IDE では Timer icon をドラッグ&ドロップすると FrmMain.Designer.cs に次の一行が追加される。
private System.Windows.Forms.Timer Timer1;
セットしたタイマーによるイベントを実行
- UIスレッドでテキストボックスを交信するため Invoke を使用する
private void OnTimeEvent(object? sender, ElapsedEventArgs e)
{
if (InvokeRequired)
{
Invoke(new Action(() => UpdateTextBox(e.SignalTime)));
}
else
{
UpdateTextBox(e.SignalTime);
}
}
- 実行されるイベントの内容(フォームのデジタル日付・時刻を更新)
private void UpdateTextBox(DateTime signalTime)
{
// メッセージ受け渡し変数に代入
if (RbnUTC.Checked == true)
{
LblDateTime.Text = DateTime.UtcNow.ToString("yyyy'-'MM'-'dd' 'HH':'mm':'ss");
frmSettings.TxtScreenTime.Text = "UTC";
}
else if (RbnLocal.Checked == true)
{
LblDateTime.Text = DateTime.Now.ToString("yyyy'-'MM'-'dd' 'HH':'mm':'ss");
frmSettings.TxtScreenTime.Text = "local";
}
}
Back
Alt+HOME
この 作品 は
クリエイティブ・コモンズ 表示 - 非営利 - 改変禁止 4.0 国際 ライセンス
の下に提供されています。
English
Powered by