I'm trying to come up with an unobtrusive way to to display minor error messages to a user. So I've added a statusbar to my form,
<StatusBar Margin="0,288,0,0" Name="statusBar" Height="23" VerticalAlignment="Bottom">
<TextBlock Name="statusText">Ready.</TextBlock>
</StatusBar>
And then when they click an "Add" button, it should do some stuff, or display an error message:
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 = "";
But the message just sits there for the life of the app... I think I should reset it after about 5 seconds... how can I set a timer to do that?
Bonus: How do I give it a nifty fade-out effect as I do so?
I've created a System.Timers.Timer
,
private Timer _resetStatusTimer = new Timer(5000);
void _resetStatusTimer_Elapsed(object sender, ElapsedEventArgs e)
{
statusText.Text = "Ready";
}
But the Elapsed
event runs on a different thread than the UI, which it doesn't like... how to I get around that?