Я пытаюсь придумать ненавязчивый способ для отображения незначительных сообщений об ошибках для пользователя. Итак, я добавил строку состояния в мою форму,
<StatusBar Margin="0,288,0,0" Name="statusBar" Height="23" VerticalAlignment="Bottom">
<TextBlock Name="statusText">Ready.</TextBlock>
</StatusBar>
И затем, когда они нажимают кнопку «Добавить», он должен что-то делать или отображать сообщение об ошибке:
private void DownloadButton_Click(object sender, RoutedEventArgs e)
{
addressBar.Focus();
var url = addressBar.Text.Trim();
if (string.IsNullOrEmpty(url))
{
statusText.Text = "Nothing to add.";
return;
}
if (!url.Contains('.'))
{
statusText.Text = "Invalid URL format.";
return;
}
if (!Regex.IsMatch(url, @"^\w://")) url = "http://" + url;
addressBar.Text = "";
Но сообщение просто хранится в течение всей жизни приложения ... Я думаю, что я должен сбросить его примерно через 5 секунд ... Как я могу установить таймер для этого?
Бонус: Как мне придать этому эффекту плавного затухания?
Я создал System.Timers.Timer
,
private Timer _resetStatusTimer = new Timer(5000);
void _resetStatusTimer_Elapsed(object sender, ElapsedEventArgs e)
{
statusText.Text = "Ready";
}
Но событие Elapsed
выполняется в потоке, отличном от пользовательского интерфейса, что ему не нравится ... как это обойти?