Как мне изменить значение индикатора выполнения из минут? - PullRequest
0 голосов
/ 20 ноября 2018

Я делаю проект "shutdowner" в WinForm.Я могу указать количество минут, после которых компьютер выключится.Теперь я создаю индикатор выполнения, минимальное значение 0, максимальное значение 100.

Например: я ввожу 3 минуты (180 секунд) и нажимаю кнопку «Пуск», значение должно быть 0, и онодолжно быть 100 при выключении компьютера (после введенных минут).

Я попробовал немного математики, но у меня не получилось.Спасибо за помощь!

1 Ответ

0 голосов
/ 20 ноября 2018

Попробуйте что-то вроде ...

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

        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...