【问题标题】:How do i change the value of progressbar from minutes?如何从分钟更改进度条的值?
【发布时间】:2018-11-20 17:28:56
【问题描述】:

我正在 WinForm 中做一个“关机”项目。 我可以在那里输入几分钟,这些分钟后电脑关机。 现在我创建一个进度条,最小值为 0,最大值为 100。

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

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

【问题讨论】:

  • 你能告诉我们一些你尝试过的代码吗?
  • 为什么不将最大值设置为秒数?省去你做任何数学的麻烦。
  • 您看过 ProgressBar 文档吗? docs.microsoft.com/en-us/dotnet/api/…
  • 向我们展示你的数学。这是一个非常简单的问题,可以通过简单的除法来解决。
  • @RyanSchlueter 我删除了代码,因为 HandbagCrab 没有工作,因为我想要 100% ;)

标签: c# winforms


【解决方案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! ...

        }
    }

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 2018-08-05
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 2021-09-16
    • 2018-01-12
    相关资源
    最近更新 更多