WPF Неблокирующее, автоматически закрывающееся окно сообщения - PullRequest
3 голосов
/ 05 апреля 2011

Мне нужно реализовать неблокирующую MessageBox, которая автоматически закрывается через 20 секунд. Может кто-нибудь подсказать, как мне это сделать?

Ответы [ 2 ]

9 голосов
/ 05 апреля 2011

Вы создаете новое окно с DispatcherTimer .Когда откроется окно, вы запускаете таймер.Затем у вас есть два варианта:

  • (Легко :) Вы устанавливаете таймер на 20 секунд и закрываете окно по истечении времени таймера.
  • (Хорошо :) Вы устанавливаете таймер наодну секунду и уменьшать счетчик (начиная с 20) каждый раз, когда истекает таймер.Вы показываете счетчик в окне и закрываете окно, когда счетчик достигает 0.
6 голосов
/ 05 апреля 2011

Когда вы говорите, что неблокирование, я немедленно исключаю класс MessageBox (предполагая, что под неблокированием вы подразумеваете немодальный диалог?).

Вместо этого вы можете создать Окно, которое является вашей собственной реализацией MessageBox. Чтобы сделать его немодальным, вы вызываете метод Show (). Затем вы можете просто установить 20-секундный таймер для вызова метода close:

DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();</p> <pre><code>//Constructor public MyMessageBox() { timer.Interval = TimeSpan.FromSeconds(20d); timer.Tick += new EventHandler(timer_Tick); } public new void Show() { base.Show(); timer.Start(); } void timer_Tick(object sender, EventArgs e) { //set default result if necessary timer.Stop(); this.Close(); }

Выше предполагается, что вы создали класс с именем MyMessageBox, который наследуется от Window.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...