Я хочу тип типа таймера для ящиков сообщений. После отображения ошибки он должен исчезнуть без вмешательства пользователя через 5 секунд.Как скрыть окно сообщения?
ответ
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
}
Невозможно с классом MessageBox
; вам нужно создать свою собственную форму, которая имитирует ее и добавить эту функцию самостоятельно.
Неправильное решение. Вам нужно окно подсказки.
Что такое «окно подсказки»? Если его что-то в формах в окнах его новое для меня - если его что-то вы создаете, то это слишком тонкий ответ. – Murph 2010-11-24 18:39:54
Как насчет использования sendkeys?
Что-то вроде этого:
http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send.aspx
по крайней мере, чтобы вы начали в научных исследованиях.
Если это на веб-странице, вы можете использовать Javascript или JQuery для довольно хороший эффект. Это часто называют «Fade» анимация. Он использует таймер.
При таком подходе вы не будете использовать фактическое предупреждение или MessageBox. Вы используете <div>
или какой-либо другой элемент HTML.
Вы можете найти код here за то, что вы делаете, используя javascript.
Или, если вы используете jQuery, найдите fadeOut
. Вот один article.
Ну, вы можете сделать это с помощью окон сообщений Windows API. Вам просто нужно схватить дескриптор окна сообщений, а затем отправить сообщение WM_CLOSE после срабатывания таймера. Убедитесь, что вы заметили событие закрытия окна и оставили таймер в этом случае. Вам просто нужно немного P/Invoke. Но лучшим решением является не использование диалогового окна в соответствии с моим ответом на этот вопрос. – 2010-11-24 18:18:54
Я, вероятно, должен был сформулировать его так, как будто «MessageBox` не имеет этой функции, вам нужно обходное решение». – BeemerGuy 2010-11-24 18:21:45