Автоматически закрывать окно сообщения в C#
В настоящее время я разрабатываю приложение на C#, где я отображаю MessageBox. Как я могу автоматически закрыть окно сообщения через пару секунд?
4 ответа
Вам нужно будет создать собственное окно с выделенным кодом, содержащим загруженный обработчик и обработчик таймера следующим образом:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Timer t = new Timer();
t.Interval = 3000;
t.Elapsed += new ElapsedEventHandler(t_Elapsed);
t.Start();
}
void t_Elapsed(object sender, ElapsedEventArgs e)
{
this.Dispatcher.Invoke(new Action(()=>
{
this.Close();
}),null);
}
Затем вы можете отобразить свое собственное окно сообщения, вызвав ShowDialog():
MyWindow w = new MyWindow();
w.ShowDialog();
Метод System.Windows.MessageBox.Show() имеет перегрузку, которая принимает окно-владелец в качестве первого параметра. Если мы создадим Окно невидимого владельца, которое мы затем закроем через указанное время, его дочернее окно сообщения также закроется.
Вот полный ответ: /questions/21227247/zakrojte-messagebox-cherez-neskolko-sekund/21227280#21227280
[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError=true)]
static extern int MessageBoxTimeout(IntPtr hwnd, String text, String title,
uint type, Int16 wLanguageId, Int32 milliseconds);
MessageBoxTimeout((System.IntPtr)0 ,"Message", "Title",0,0, 1000);
//last parameter timeout in milisecond
Эта библиотека https://github.com/DmitryGaravsky/AutoClosingMessageBox реализует MessageBox, который закрывается через заданное время.
Также см. Этот ответ stackoverflow /questions/21227247/zakrojte-messagebox-cherez-neskolko-sekund/21227276#21227276