2010-11-24 6 views
5

Я хочу тип типа таймера для ящиков сообщений. После отображения ошибки он должен исчезнуть без вмешательства пользователя через 5 секунд.Как скрыть окно сообщения?

ответ

9
timer.Interval=5000; 
timer.Enabled=true; 
MessageBox.Show("Should close automatically"); 

Associate следующий фрагмент с Tick EventHandler таймера:

private void timer_Tick(object sender,EventArgs evt) { 
    timer.Enabled=false; 
    SendKeys.Send("{ESC}"); // SendWait as alternative 
} 
2

Невозможно с классом MessageBox; вам нужно создать свою собственную форму, которая имитирует ее и добавить эту функцию самостоятельно.

+0

Ну, вы можете сделать это с помощью окон сообщений Windows API. Вам просто нужно схватить дескриптор окна сообщений, а затем отправить сообщение WM_CLOSE после срабатывания таймера. Убедитесь, что вы заметили событие закрытия окна и оставили таймер в этом случае. Вам просто нужно немного P/Invoke. Но лучшим решением является не использование диалогового окна в соответствии с моим ответом на этот вопрос. – 2010-11-24 18:18:54

+0

Я, вероятно, должен был сформулировать его так, как будто «MessageBox` не имеет этой функции, вам нужно обходное решение». – BeemerGuy 2010-11-24 18:21:45

0

Неправильное решение. Вам нужно окно подсказки.

+0

Что такое «окно подсказки»? Если его что-то в формах в окнах его новое для меня - если его что-то вы создаете, то это слишком тонкий ответ. – Murph 2010-11-24 18:39:54

0

Если это на веб-странице, вы можете использовать Javascript или JQuery для довольно хороший эффект. Это часто называют «Fade» анимация. Он использует таймер.

При таком подходе вы не будете использовать фактическое предупреждение или MessageBox. Вы используете <div> или какой-либо другой элемент HTML.

Вы можете найти код here за то, что вы делаете, используя javascript.

Или, если вы используете jQuery, найдите fadeOut. Вот один article.