I have application with "About" button. When it is clicked, I want to open a new window with credits. But If the window is already open, I want only bring it to focus (first plan), instead of opening next instance. The first part, to prevent opening multiple windows is easy:
private void Button_Click(object sender, RoutedEventArgs e)
{
var existingWindow = Application.Current.Windows.OfType<About>().Any();
if (!existingWindow)
{
About p = new About();
p.Show();
}
}
So first I check if any windows of type About
exist, and if it is false
I create new instance and show it. But how to implement the second part? I mean else
statement if the window About
is already open, to bring it to the first plan?
>Solution :
I think what you’re looking for is the Activate
method. Here’s how I would write it:
private void Button_Click(object sender, RoutedEventArgs e)
{
var existingWindow = Application.Current.Windows.OfType<About>().FirstOrDefault();
if (existingWindow != null)
{
existingWindow.Activate();
}
else
{
About p = new About();
p.Show();
}
}
I’m using FirstOrDefault()
instead of Any()
to get the first window of type About
or null
if no such window exists. Then I check if existingWindow
is not null and call Activate()
or make a new one accordingly.