WinForms: в поисках простого способа открыть панель «Обработка ...» - PullRequest
2 голосов
/ 09 августа 2011

У меня есть приложение WinForms, которое в какой-то момент выполнит некоторые вычисления, которые займут пару секунд.В течение этого времени я отключаю элементы управления.Кроме того, я хочу, чтобы всплывающее окно такого типа «визуально» блокировало приложение.

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

Есть какие-нибудь предложения, как я могу добиться этого быстрым и простым способом?.. Я имею в виду, не переделывая всю форму.

Ответы [ 3 ]

4 голосов
/ 09 августа 2011

Ваша проблема с вещами, которые не отображаются на дополнительной панели, заключается в том, что все происходит в одном потоке, но ваши вычисления блокируют появление всего, потому что они затягивают поток. Вы должны изучить использование backgroundWorker, который является одним из инструментов в WinForms. Вы должны бросить вызов функции, которая выполняет вычисления, в метод DoWork backgroundWorker, после чего сама форма может продолжать функционировать во время вычислений.

См. http://msdn.microsoft.com/en-us/library/cc221403%28v=vs.95%29.aspx для примеров

1 голос
/ 09 августа 2011

Вы можете создать простой UserControl только с Label и ImageBox, возможно, с открытым сеттером для их значений. Вы можете добавить его в форму, установив для свойства Visible значение false. Затем вы можете сделать это видимым во время ваших расчетов и вернуться наверх невидимым в конце.

1 голос
/ 09 августа 2011

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

Используя диалоговое окно, а не окно сообщения, вы по-прежнему можете контролировать закрытие окна после завершения обработки.

...