如何从分钟更改Progressbar的值?

时间:2018-11-20 17:28:56

标签: c# winforms

我正在WinForm中执行“关机”项目。 这些分钟过后,我可以输入一分钟的时间来关闭计算机。 现在,我创建一个进度条,最小值为0,最大值为100。

例如: 我输入3分钟(180秒),然后单击“开始”按钮,该值应为0,并且在PC关闭时(输入的分钟数之后)应为100。

我尝试了一些数学运算,但没有成功。 谢谢您的帮助!

1 个答案:

答案 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! ...

        }
    }