Как показать обработку формы в моей основной форме - PullRequest
0 голосов
/ 11 июня 2010

Я хочу показать обработку изображения в форме, когда моя основная форма работает.

Я создал форму обработки.

Я попробовал это с

ProcessingForm obj = new ProcessingForm();

obj.show();

DOSomeStuff();

obj.close();

показывает форму обработки ... но некоторое время она перестает отвечать ... или мое gif-изображение перестает анимироваться.

Как это сделать ??

Ответы [ 2 ]

0 голосов
/ 11 июня 2010

Я использовал этот код из CodeProject. Это «вращающаяся» анимация таймера, похожая на ту, что используется в Firefox.

Добавьте DLL в качестве ссылки на ваш проект и опустите индикатор прогресса в вашей форме.

Установить его начальное состояние невидимым.

Тогда, когда вы хотите показать свой вызов обработки:

this.progressIndicator.Visible = true;
this.progressIndicator.Start();

Чтобы удалить его после завершения обработки, позвоните:

this.progressIndicator.Stop();
this.progressIndicator.Visible = false;

Он использует System.Windows.Forms.Timer для управления анимацией и переопределяет метод OnPaint для рисования изображения вращающимся. Это, вероятно, так точно, как вам нужно.

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

Однако вам придется перенести обработку в другой поток - используйте класс BackgroundWorker, иначе пользовательский интерфейс не обновится.

0 голосов
/ 11 июня 2010

Вы можете использовать класс BackgroundWorker, чтобы отделить процесс, работающий в области обработки сообщений формы и обработки вашего кода, например DoSomeStuff().Если вы хотите знать, как продвигался ваш DoSomeStuff(), вы можете реализовать это в фоновом режиме, потому что этот класс его поддерживает.

Но если ваша среда будет медленной, чтобы эти две вещи обрабатывались в реальном времени,Вы должны дать вашему BackgroundWorker какой-то самый низкий приоритет, тогда ваше изображение может работать в режиме реального времени, но ваши вещи работают дольше. Это не хорошее решение, потому что зависит от окружающей среды.

...