在主窗体上点击菜单时,如果做到每个窗体不会被重复打开,如果打开了,可以将其重新获得焦点。
首先在主窗体中将菜单关联的窗体实例化。
第二步:将每个菜单对应窗体的closing事件重写。之所以要重写closing事件,是因为在菜单对应的窗口关闭之后,再次打开就会报错
第三步:在主窗体中菜单事件里面进行判断处理
栗子如下:
public partial class main : Window
{
//实例化关联的窗口
MainWindow m = new MainWindow();
public main()
{
InitializeComponent();
}
//事件调用
private void button_Click(object sender, RoutedEventArgs e)
{
if (m == null || m.IsVisible == false)
{
m.Show();
}
else
{
m.Activate();
m.WindowState = WindowState.Normal;
}
}
//重写Closing方法
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
this.Hide();
e.Cancel = true;
}
}
如果有朋友找到了更好的方法,望赐教和分享。