我正在WinForm中执行“关机”项目。 这些分钟过后,我可以输入一分钟的时间来关闭计算机。 现在,我创建一个进度条,最小值为0,最大值为100。
例如: 我输入3分钟(180秒),然后单击“开始”按钮,该值应为0,并且在PC关闭时(输入的分钟数之后)应为100。
我尝试了一些数学运算,但没有成功。 谢谢您的帮助!
答案 0 :(得分:-1)
尝试类似...
private int totalSeconds;
private DateTime targetTime;
private void button1_Click(object sender, EventArgs e)
{
int mins = (int)numericUpDown1.Value;
if (mins > 0)
{
TimeSpan ts = TimeSpan.FromMinutes(mins);
targetTime = DateTime.Now.Add(ts);
totalSeconds = (int)ts.TotalSeconds;
progressBar1.Value = 0;
button1.Enabled = false;
timer1.Interval = 1000;
timer1.Start();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
TimeSpan ts = targetTime.Subtract(DateTime.Now);
if (ts.TotalMilliseconds > 0)
{
label1.Text = "-" + ts.ToString(@"mm\:ss");
double percent = ((double)totalSeconds - ts.TotalSeconds) / (double)totalSeconds;
progressBar1.Value = (int)(progressBar1.Maximum * percent);
}
else
{
timer1.Stop();
button1.Enabled = true;
progressBar1.Value = progressBar1.Maximum;
// ... do something here! ...
}
}