#c# #.net #winforms
#c# #.net #winforms
Вопрос:
У меня есть этот метод, который я вызываю с пометкой таймера:
private void NewsUpdate()
{
counter = 1;
progressBar1.Value = counter * 10;
progressBar1.Value = counter;
label9.Text = counter.ToString();
label9.Visible = true;
if (counter == 10)
{
client.Encoding = System.Text.Encoding.GetEncoding(1255);
page = client.DownloadString("http://rotter.net/scoopscache.html");
TextExtractor.ExtractDateTime(page, newText, dateTime);
StreamWriter w = new StreamWriter(@"d:rotterhtmlrotterscoops.html");
w.Write(page);
w.Close();
TextExtractor.ExtractText(@"d:rotterhtmlrotterscoops.html", newText, dateTime);
combindedString = string.Join(Environment.NewLine, newText);
counter = 0;
}
}
Значение progressBar1
установлено от 0 до 100.
Я хочу, чтобы, если я сделаю:
if (counter == 10)
Затем progressBar1
он переместится в конец через 10 секунд.
Если я установлю его равным 50, то это 50 секунд, поэтому progressBar1
он должен двигаться 50 секунд до конца.
timer1
В конструкторе установлено значение 1000 мс
Например, теперь так оно и есть:
counter = 1;
progressBar1.Value = counter * 10;
progressBar1.Value = counter;
label9.Text = counter.ToString();
label9.Visible = true;
if (counter == 10)
Он будет считать до 10 progressBar1
, переместится на 10, а затем вернется к началу.
Я хочу, чтобы, если я изменю его на 10 50 или 33 progressBar1
, он будет знать, что нужно двигаться до конца в соответствии с подсчитанными секундами.
Если его 33, то посчитайте 33 и переместите значение progressBar1
в конец через 33 секунды.
Что я хочу сделать, так это то, что если я установлю IF == 10, то ProgressBar увеличится на 10 секунд * 10 шагов, так что за 10 секунд ProgressBar дойдет до 100 до конца. Затем снова (этот таймер является обновлением, он должен продолжать работать все время, я не хочу его останавливать, я просто проверяю, прошло ли 10 секунд для обновления. И я также хочу, чтобы ProgressBar увеличивался в соответствии с пределом, который я установил в данном случае 10, до конца. Если его == 10, то ProgressBar должен увеличиваться каждую секунду на 10. И если я установлю для него значение == 50, например, тогда ProgressBar должен увеличиваться на 2 каждые секунды
Комментарии:
1. С кем вы хотите сделать
progressBar1.Value = counter * 10; progressBar1.Value = counter;
?
Ответ №1:
Вам нужен счетчик с n шагами, где n — количество секунд до завершения.
К этому можно подойти двумя способами:
-
(Предпочтительно) Установите
Maximum
свойствоProgressBar
. Это сделает все автоматическим!counter ; progressBar1.Maximum = 33; //This could be set in the designer, or on init progressBar1.Value = counter;
-
Рассчитайте интервал самостоятельно. Сделайте это, разделив счетчик на общее количество секунд, а затем умножив на диапазон (в данном случае 100).
counter ; progressBar1.Value = (int)Math.Round((counter / 33f) * 100);
Весь ваш остальной код звучит нормально, основываясь на вашем комментарии.
Комментарии:
1. @user3739928 Спасибо за разъяснения, надеюсь, мой новый ответ поможет! Возможно, вы захотите включить этот комментарий в свой вопрос для будущих читателей.