Bezdepbonusu7Программирование: статьи и ответы

Вопрос

WinForms: ищем простой способ открыть панель "Обработка.."

Автор вопроса: EfrainОтветов: 3

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

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

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

  • Но таким образом он заблокировал бы процесс ожидания щелчка пользователя, и его вычисления не были бы выполнены... Francesco Baruchelli 09.08.2011

winformspopupbusyindicator

Ответы

Ответ 1 · рейтинг 4 · k.schroeder31

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

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

Ответ 2 · рейтинг 1 · Taryn

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

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

Ответ 3 · рейтинг 1 · Francesco Baruchelli

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы