Выполнить действие по умолчанию для MessageBox после истечения интервала - PullRequest
1 голос
/ 08 марта 2011

Допустим, у меня есть настраиваемое окно сообщения, используемое следующим образом

MyWindow.ShowDialog();

Мне нужно Close(), Hide() или выполнить обработчик, скажем Close_Click после, скажем, 1 секунды, если пользовательское действие не происходит.

Thread.Sleep() и Timer подходы мало помогли.

РЕДАКТИРОВАТЬ:

Я сделал это в конструкторе окна

    var timer = new System.Timers.Timer(timeOut);
    timer.Start();
    timer.Elapsed += (sender, e) =>
    {
      cmdClose_Click(null, null); //Attached to a button which normally does the job of closing the window.
    };

Ответы [ 3 ]

3 голосов
/ 08 марта 2011

Если вы используете WPF, сработает DispatcherTimer (System.Windows.Threading) в вашем окне сообщений.Просто используйте событие Tick для вызова Close ().

1 голос
/ 08 марта 2011

Одна секунда звучит для меня слишком коротко, но все равно.

Просто добавьте элемент управления Timer в форму настраиваемого окна сообщения, включите его и установите его Intervall на 1000. Затем добавьте событие для его события таймера и поместите вызов на Close() внутри.

1 голос
/ 08 марта 2011

Я должен был сделать нечто подобное в прошлом.Я инициализировал System.Threading.Timer, который периодически срабатывает.На каждом тике, если я могу закрыть окно (потому что некоторая фоновая операция завершена), я устанавливаю DialogResult и вызываю Close (обязательно проверяя InvokeRequired).

...