在WPF中show出的窗体时
判断如果没有打开则打开
打开了就获得窗体焦点
如何做啊?

解决方案 »

  1.   

    假设你的窗体变量为win
    if(win!=null)
    {
      if(win.Visibility !=Visibility.Visible)
          win.Show();
      else
          win.Focus();
    }
      

  2.   

    确保某一子窗口只打开一次foreach (Form frm in this.MdiChildren)
                {
                    if (frm is WorkerList)
                    {
                        frm.WindowState = FormWindowState.Normal;
                        frm.Activate();
                        return;
                    }
                }            WorkerList wl = new WorkerList();
                wl.MdiParent = this;
                wl.Show();
      

  3.   

    我这里是WPF啊    跟WINFORM 不一样
      

  4.   

    那用另一种方法窗体构造函数里加一个bool如果调用构造函数实例化过这个窗体就为true那么在别的地方调用之前先判断这个bool再new窗体.
      

  5.   

    类似于单例模式,需要提供一个公开的Create方法,方法里面负责自己唯一的一个窗体。
    维护一个静态变量,用来表明打开的窗体,捕获窗体关闭事件,关闭后清空变量。
    就这么简单。
      

  6.   


    这里你需要注意,是否打开多个窗口是取决于你是否new了多个实例来决定的。
    我所说的那个win变量应该为一个全局变量。if(win!=null)
    {
      if(win.Visibility !=Visibility.Visible)
        win.Show();
      else
        win.Focus();
    }
    else
    {
      win = new Window1();
      win.Show();
    }
      

  7.   

     
     public Window1 newwin;//在事件中代码
    if (newwin == null||newwin.IsVisible==false)
                {
                    newwin = new Window1();
                    newwin.Show();
                }
                else
                {
                    newwin.Activate();
                    newwin.WindowState = System.Windows.WindowState.Normal;
                }