| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > progressBar |
| Автор: maxnoskov 1.12.2006, 13:17 |
| Помогите. Есть главная форма приложения. На ней DataSet. Я заполняю DS из xml файла с помощью WriteXml. Как мне одновременно со считыванием файла открыть окно в котором будет в это время работать progressBar. |
| Автор: ivashkanet 1.12.2006, 13:36 | ||
| maxnoskov, в чем конкретно вопрос? Как показать окно?
Или как совместить показ диалога с загрузкой? Тогда нужно будет загрузку сделать в отдельном потоке, а потом вернуть датасет из потока Реального прогресбара у тя не получится, но бегущая строка будет точно А может Лоад? Добавлено @ 13:36 или Read? |
| Автор: maxnoskov 1.12.2006, 13:46 | ||||||||
Именно совместить!
Можно пример?
А в чем разница?
Конечно! |
| Автор: ivashkanet 1.12.2006, 14:20 |
Разница в том, что, по идее, когда закончится полоска должна закончиться и загрузка данных. Но ReadXML не предоставляет информацию сколько еще осталось (строк, элементов, ...). Значит нельзя рассчитать время окончания, а значит придеться прогонять статусбар в цикле: закончил -- начинай сначала. Могу идею (на реализацию времени нет). 1) Делаешь метод ThreadDo(), в котором создаешь датасет, загружаешь его, а в конце передаешь в главное приложение. 2) Создашь диалог в котором только один прогресбар. Который сразу же запускается и гоняет полоску пока не получит информацию от формы, что датасет передали. 3) Когда нужно загрузить данные --- запускаешь поток. а потом этот диалог Все |
| Автор: DarkDragon 1.12.2006, 22:02 | ||
ivashkanet, делаю работу за тебя
|
| Автор: maxnoskov 19.2.2007, 15:25 |
| Перешел на http://forum.vingrad.ru/topic-135787/hl/maxnoskov/index.html, но реализация та же. Спасибо всем. |
| Автор: ivashkanet 22.2.2007, 16:20 | ||
| Этот пост преследует цель "чисто похвастаться" Ну... может еще кому-то пригодится Понадобилось мне сегодня реализовать этот самый прогрессБар. Решил я его сделать с помощью BackgroundWorker. И так хорошо и прозрачно он у меня получился, что я аж залюбовался Это правда VB .Net, но суть-то понятна Значится, из доп компонент: ListBox, Button, ProgressBar и BackgroundWorker
|
| Автор: _Dream 23.2.2007, 19:49 |
| немного не понял.. это ведь бегущая строка просто подучается? а как реальный прогресс бар сделать? PS и хотелось бы на CS код примера ivashkanet увидеть |
| Автор: ivashkanet 23.2.2007, 20:36 | ||||||
У меня и сделан реальный прогресбар. Вся фишка в том, что здесь я знаю сколько этапов обработки у меня есть. Их будет ровно столько, сколько элементов будет в массиве listOfWorkCentres В начале я вычисляю шаг с которым передвигать прогрессбар
(Выполненная работа = 100 (%), всего шагов listOfWorkCentres.Count) Далее на каждом шаге (с каждым новым рабочим центром) я увеличиваю progress на этот шаг и говорю об этом основной форме
Это в моей ситуации. Но что делать если вся работа состоит из одного тяжелого запроса удаленному сарверу? Тогда реальный прогрессбар (кроме, конечно, было 0, а в конце сразу стало 100) сделать, естественно, нельзя Ввиду отсутствия дома студии, перевести корректно смогу только в понедельник, но если кто-то сделает это за меня я скажу только спасибо Добавлено @ 20:38 Есть, тот же рефлектор --- компилишь VB .Net приложение, а потом дезассемблируешь его под язык C# |
| Автор: ivashkanet 26.2.2007, 15:20 | ||
Как и обещал, код C#
|
| Автор: 777Lich777 19.12.2010, 00:55 | ||||
Клево сделал работу ничего не скажешь, код не рабочий. System.Threading.Thread thr = new System.Threading.ThreadStart (ProcessDo); Thread и ThreadStart - несовместимые типы если привести к одному то ругается на поток. |
| Автор: Certain 19.12.2010, 03:21 | ||
|