您好,我很難嘗試使用 System.Windows.Forms.Timer 在 Winforms 應用程式中更改標簽的值,我需要標簽從早上 6 點到下午 2 點顯示數字 1。每天下午 2 點到晚上 10 點是 2 號,每天晚上 10 點到早上 6 點是 3 號。這是我到目前為止所嘗試的。
我在表單中添加了一個時鐘,我將時鐘的間隔更改為 28800000
InitializeComponent();
//8 Hour timer
Timer timer5 = new Timer();
timer5.Interval = 28800000; // 8 hours
timer5.Tick = new EventHandler(timer5_Tick);
timer5.Start();
在計時器刻度上,我添加了這個。
private void timer5_Tick(object sender, EventArgs e)
{
_ = DateTime.Now.Hour;
if (DateTime.Now.Hour >= 6 && DateTime.Now.Hour < 1400)
{
//First shift 06:00am through 2:00pm
LblShift.Text = "2";
}
if (DateTime.Now.Hour >= 1400 && DateTime.Now.Hour < 2200)
{
//Second shift 02:00pm through 10:00pm
LblShift.Text = "2";
}
if (DateTime.Now.Hour >= 2200 && DateTime.Now.Hour < 6)
{
//Second shift 02:00pm through 10:00pm
LblShift.Text = "3";
}
}
當我第一次打開表單時,標簽會改變,但之后就不會再更新了。我究竟做錯了什么?我將不勝感激任何幫助
uj5u.com熱心網友回復:
長間隔計時器往往不太可靠。相反,將您的計時器設定為更短的時間間隔,例如一分鐘,然后檢查每個滴答的時間(無論如何您都會這樣做)以了解要顯示的值:
InitializeComponent();
Timer timer5 = new Timer();
timer5.Interval = 60*1000; // 60 seconds
timer5.Tick = new EventHandler(timer5_Tick);
timer5.Start();
我需要標簽從早上 6 點到下午 2 點顯示數字 1,從下午 2 點到晚上 10 點顯示數字 2,從晚上 10 點到早上 6 點顯示數字 3
如果我們全天按順序進行,我們可以為此簡化條件檢查(并包括兩次第三班)
private void timer5_Tick(object sender, EventArgs e)
{
var h = DateTime.Now.Hour;
if (h < 6)
{
LblShift.Text = "3";
}
else if (h < 14)
{
LblShift.Text = "1";
}
else if (h < 22)
{
LblShift.Text = "2";
}
else
{
LblShift.Text = "3";
}
}
或者為了好玩:
private List<(int, int)> shiftHourMap = new List<(int, int)> {(6,3),(14,1),(22,2),(99,3)};
private int CurrentShift()
{
return shiftHourMap.First(m => DateTime.Now.Hour < m.Item1).Item2;
}
private void timer5_Tick(object sender, EventArgs e)
{
lblShift.Text = CurrentShift().ToString();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/489391.html
