2009-10-21 1 views
0

У меня есть ярлык на заставке, который отображается в течение 4 секунд. Я пытаюсь сделать ярлык отображающим процесс загрузки в процентах. Очевидно, это просто показать пользователю, что программа фактически запускается, а не фактически «загружает» что-либо. Есть ли способ, с помощью которого на этикетке может отображаться процент (от 1% до 100%) в течение 4 секунд? Немного потерял, как это сделать.C# - Загрузка дисплея 1-100% в течение 4 секунд

+0

Но разве это не зависит от производительности компьютера? Я имею в виду, что даже если ваш экран заставки говорит «Завершено», потому что вы используете фиксированное время, ваша основная форма не может быть завершена в то время. – Tarik

+0

Ну, это на самом деле менее вероятно, произойдет в быстрых компьютерах текущего времени. – Tarik

ответ

4

Поместите элемент управления Timer в форму и установите для свойства Interval значение 40 и его свойство Enabled равным true. Создайте переменную формы уровня, как это:

private int _Progress = 0; 

В случае Tick таймера, поместить этот код:

if (_Progress < 100) 
{ 
    _Progress++; 
    label1.Text = _Progress.ToString() + "%"; 
} 
else 
{ 
    timer1.Enabled = false; 
} 

Таймеры на самом деле не с точностью до миллисекунды, так что это не будет принимать именно 4 секунды, но он выполнит эту работу.

+0

Проблема в том, что ваше решение требует, чтобы программа работала, и он хочет что-то, что показывает, что программа загружается, пока она фактически находится в процессе запуска. –

+0

@ Джеймс: серьезно? Сделайте заставку в неуправляемом C++? Гаубицы, как правило, создают большой беспорядок, когда вы используете их на мышах. :) – MusiGenesis

+0

@Nate: это, вероятно, означает, что на самом деле требуется всего 1,6 секунды для загрузки вашей основной формы. – MusiGenesis

1

Предполагая, что вы говорите, что WinForms (а не WPF), самым простым способом будет контроль таймера. Установите тайм-аут на 40 мс (4 с = 4000 мс 4000 мс/100 обновлений = 40 мс). Создайте целое число на уровне класса для отслеживания прогресса. Тогда ваш код события OnTick будет выглядеть примерно так ...

if(progress < 100) 
{ 
    progress++; 
    progessLabel.Text = String.Format("Loading... Progress: {0}%", progress); 
} 
else 
{ 
    timer.Enabled = false; 
} 
+0

Это * deja vu * сначала! – MusiGenesis

0

таймер с заданным интервалом, чтобы сказать 100 миллисекунд будет самый простой подход. Держите подсчет количества раз, когда вы вызываете событие таймера, и обновляйте индикатор выполнения на 2,5 процента каждого тика.

Хотя это сработает, я бы сказал, что индикатор прогресса не идеален для этой ситуации. Вместо этого просто анимационная графика будет лучше, поскольку она дает указание, что ваша программа запускается, но не вводит в заблуждение, как индикатор выполнения.

Я думаю, что Microsoft регулярно совершает эту ошибку при использовании ошибочных индикаторов выполнения в определенных приложениях.

+0

Netscape использовал это с индикатором выполнения, который прокладывал весь путь вправо, а затем поворачивался и начинал двигаться назад влево и т. Д. До тех пор, пока выполнялась загрузка (что обычно было часами назад в 90-х годах). – MusiGenesis

Смежные вопросы