none
WPF 如何关闭除主窗体以外的窗体? RRS feed

  • 问题

  • 在WPF中   有主窗体W0   通过控件可以打开W1 W2和W3共3个窗体

    现需要在打开其中一个窗体的时候将其他的窗体关闭,如何做?   即子窗体只能打开一个,互斥。

    2013年8月27日 6:14

答案

  • Application.Current中有一个成员是保存了当前应用打开的所有Window对象引用, 你可以遍历他:

    Application.Windows 属性


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    • 已标记为答案 _害虫 2013年9月3日 1:54
    2013年8月28日 6:32
    版主

全部回复

  • 方法一:将多个子窗体定义为主窗体W0的私有成员,调用时再给W1、W2、W3赋值,手动打开或关闭窗口。

    private Window1 W1; ...W1=new Window1();W1.Show();....W1.Close();W1=null;

    方法二:使用 this.FindName("Wn") as Windown) == null 判读Wn窗口是否存在,存在则将它关闭,重新创建并打开一个窗体。其中要注意一点的是子窗体手动关闭后要附值为null,否则窗口都是只关闭不清楚。

    如果多个窗体的切换频繁可以采用Wn.Close()关闭但不赋值为null的方法。要重新打开Wn如W1时,可以判读W1.IsActive属性是否为true,再调用Wn.Show()重新打开。

    2013年8月27日 15:55
  • Application.Current中有一个成员是保存了当前应用打开的所有Window对象引用, 你可以遍历他:

    Application.Windows 属性


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    • 已标记为答案 _害虫 2013年9月3日 1:54
    2013年8月28日 6:32
    版主
  • 我用了你上面给的方法,怎么2种方法都行不通啊?能具体点吗?你确定这样可以吗?
    2013年8月28日 6:58
  • 大哥,可以给个实例么 - -!  谢谢了
    2013年8月28日 10:17