WPF如何控制每个窗体确保只打开一次

时间:2024-08-02 22:35:14

在主窗体上点击菜单时,如果做到每个窗体不会被重复打开,如果打开了,可以将其重新获得焦点。

首先在主窗体中将菜单关联的窗体实例化。

第二步:将每个菜单对应窗体的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;
        }
    }

如果有朋友找到了更好的方法,望赐教和分享。