C#WPF窗口创建

时间:2016-05-28 09:13:30

标签: c# wpf

我正在创建一个基于C#的WPF项目。 在处理我的项目时,我遇到了一些如何创建单个实例窗口的麻烦(如果我想打开窗口X,除非它关闭,否则无法再次打开)。我在网上发现了很多文章,但它们看起来很麻烦,只是在窗口打开时禁用按钮似乎更容易,并在窗口关闭时启用它。

另一方面,我想到了一个有效的替代解决方案,但我想知道在创建大量窗口时系统是否会很重。

解决方案如下所示。

 public partial class MainWindow : Window
    {
        Window1 wndw = new Window1();

        public MainWindow()
        {
            InitializeComponent();

        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
           if (!wndw.IsActive)
            wndw.Show();
        }
    }
}

正如您所看到的,我在开始时创建了窗口,当单击打开它的按钮时,它会检查它是否处于活动状态。

如果我遵循后一种方法,是否会在MainWindow创建时加载所有窗口,或者仅在启动事件window1.show()时加载组件?

感谢您的支持

1 个答案:

答案 0 :(得分:1)

我就是这样做的:

MainWindow代码:

Window1 window1 = null; // global reference var

private void btnOpenWin1_Click(object sender, RoutedEventArgs e)
{
    if (window1 == null)
    {
        window1 = new Window1();
        window1.Closed += Window1_Closed; // register event to detect when Window1 closed
        window1.Show();
    }
    else
    {
        window1.Focus();
    }
}

// register event to remove Window1 ref to be able to open it again
private void Window1_Closed(object sender, EventArgs e)
{
    window1 = null;
}