У меня есть ProgressBar и таймер.C# ProgressBar неожиданные шаги
Я хочу показать ход 1 часа: увеличение 1/3600 каждую секунду.
Когда я запустил приложение, через 30 минут, прогресс-бит составляет около 100%. прогресс. Я ожидал, что это будет на 50% через 30 минут. Почему?
public Form1()
{
InitializeComponent();
this.timer1.Tick += new EventHandler(timer1_Tick);
this.timer1.Interval = 1000;
this.timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
this.progressBar1.PerformStep();
}
-
//
// progressBar1
//
this.progressBar1.Location = new System.Drawing.Point(12, 29);
this.progressBar1.MarqueeAnimationSpeed = 1000;
this.progressBar1.Maximum = 3600;
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(100, 23);
this.progressBar1.Step = 1;
this.progressBar1.TabIndex = 2;
таймеры не очень хороши для измерения времени, они очень неточны (см. Документы Microsoft по этому вопросу), вы должны установить 'DateTime startTime = DateTime.Now' при запуске таймера и использовать' (int) DateTime. Now.Subtract (startTime) .TotalSeconds' для панели progess – x4rf41
@ x4rf41 ty для этого подсказки – DanFromGermany
Является ли ваше событие Timer уже установленным в файле 'Designer.cs'? Если это так, он вызывает 'timer1_Tick()' дважды каждый тик – Jcl