![]() |
Модераторы: gambit, Kefir, Partizan |
![]() ![]() ![]() |
|
Асоишница |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 13.3.2012 Репутация: нет Всего: нет |
Программа удаляет файлы без возможности восстановления специализированным ПО.
При запуске приложения выскакивает окошко, которое предлагает выбрать метод удаления(combobox), добавить файлы или папки и собственно нажать кнопку "Удалить". По нажатию этой кнопки должно выскочить окошко с отображением прогресса выполнения (что сейчас удаляется, сколько из скольки удалено и зелёная полоса выполнения для наглядности), которое по окончанию выдаст информацию: сколько удалено, сколько нет, сколько затрачено времени, а по нажатию ОК перейдёт опять на главное окно. Собственно вопрос как организовать это окно прогресса. Из главного окна при создании окна прогресса передаются параметры: имя метода из combobox.Text, количество элементов для удаления (файлы+папки), собственно сам список List и номер метода из combobox(надо для выбора метода удаления)) Методы удаления прописаны в отдельном модуле и просто вызываются в нужном месте прогресса(отдельно для файла и папки). Скажите куда копать и очень желательно толковый пример на эту тему... ![]() С# не знаю, но нужно GUI-приложение, так что выбор пал на Visual Studio 2013 и собственно WPF |
|||
|
||||
Ilya81 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
Информацию о самом ходе удаления всё равно может знать только модуль, его осуществляющий - последовательность вызовов метода, события и т. п.. А в самом WPF просто - ставите соответствующие control'ы (TextBlock, ProgressBar и прочие) и (в случае MVVM) обновляете свойства, на которые binding'и с вызовом события PropertyChanged, не забывая при необходимости вызвать Dispatcher.Invoke (или BeginInvoke, в зависимости от особенностей модуля удаления).
|
|||
|
||||
Uvs |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 8.8.2007 Где: Челябинск Репутация: нет Всего: нет |
Если не ошибаюсь, эта методика - называется call-back вызовы, которая реализуется с помощью обработчиков событий.
Вот, ваш код(class), или область программы, которая выполняет безвозвратное удаление данных. public class <Удаление> { public <имя метода> { выполнение процесса удаления } } Но, класс, выполняющий эти действия - понятия не имеет о прогрессе отображения операций(да и не должен, по логике. У него своя определенная задача). Если, в этот класс передать ссылку какого-нибудь компонента, подобного progressbar - то логически это будет не правильно, т.к. жесткая связность модулей - всегда ухудшает качество. И самый лучший способ, на мой взгляд это добавить в класс обработчик события. Получится вот такая конструкция: public class <Удаление> { public event EventHandler<EventArgs> OnDelete; public <имя метода> { выполнение процесса удаления; любой цикл for/foreach или какой-то другой { // проверка, инициализ-на ли ссылка обработчика событий if(OnDelete != null) OnDelete(); } } } При создании класса <Удаление> в программе - на ссылку OnDelete "вешается" процедура, выполняющая отображение прогресса. <Удаление> dlt = new <Удаление>(); dlt.OnDelete += OneStep; .................................. public void OneStep() { тут меняется прогресс бар(или ресторан ![]() } Вот, вроде и всё. Надеюсь, это облегчит решение задачи. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |