#c_sharp #wpf #xaml
Необходимо создать такое окно, которое откроется, отобразиться пару секунд и само закроется. По сути это окно будет выполнять роль уведомления. Произошло событие - всплыло уведомление, отобразилось на пару секунд и скрылось. Текст в уведомлении каждый раз разный. Передавать буду как аргумент конструктора, либо через DataContext. AlarmWindow alarm = new AlarmWindow(alarmMessage); alarm.Show(); //либо AlarmWindow alarm = new AlarmWindow() { DataContext = alarmMessage }; alarm.Show();
Ответы
Ответ 1
Должно работать так: void TickHandler(...) { Application.Current.Dispatcher.InvokeAsync(async () => { AlarmWindow alarm = new AlarmWindow(alarmMessage); alarm.Show(); await Task.Delay(2000); alarm.Close(); }); }Ответ 2
Добавьте в форму таймер с интервалом задаваемым через конструктор. И по событию таймера закрывайте форму изнутри. partial class AlarmWindow:Form{ public AlarmWindows(string msg, int timeToShow){ ... System.Timers.Timer closeMe = new System.Timers.Timer((double)timeToShow); closeMe.Elapsed += closeMe; closeMe.AutoReset = false; closeMe.Start(); ... } void closeMe(object sender, System.Timers.Timer e){ this.close(); }Ответ 3
Помог следующий способ: AlarmWindow alarm = new AlarmWindow(alarmMessage); alarm.Show(); System.Threading.Thread.Sleep(2000); // (!) вешает программу на 2 секунды, alarm.Close(); //поэтому в основном потоке использовать крайне не рекомендуется Так делать не стоит!!! Вот >тут< есть более корректный ответ.
Комментариев нет:
Отправить комментарий