Автоматически закрывать окно сообщения в 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

Другие вопросы по тегам