2012-01-28 175 views
0

在我的应用程序(WPF)我有这个窗口:如何关闭隐藏窗口(WPF应用程序)?

public partial class Window1 : Window并在XAML x:Class="WpfApplication1.Window1"

现在,当我切换到从主到窗口1和背部,我我们Visibility.Hidden和可见性。可以隐藏它们并让它们再次显示给用户。

我现在要做的是在主窗口中制作一个测试按钮,即:Close Window1。 这个窗口是隐藏的,但我真的想在后台关闭它。 起初我虽然只是使用Window.Close();但这似乎并没有伎俩。

那么,我应该如何以正确的方式做到这一点? 非常感谢您提前。

编辑1 - 使问题更加清晰

要在我的主窗口中打开的窗口1,我用这部分

Window1 W1 = null; // Initialise Field. 
    public void CalcTabel_Click(object sender, RoutedEventArgs e) 
    { 
    if (W1 == null) 
    { 
    W1 = new Window1(); 
    W1.Hoofdmenu = this; 
    W1.checkLang(); 
    W1.Show(); 
    } 
    else 
    { 
    W1.checkLang(); 
    W1.Visibility = Visibility.Visible; 
    } 
    this.Visibility = Visibility.Hidden; 
    } 

在窗口1有一个返回按钮,即有这个代码在它里面(其中“Hoofdmenu”是我们的主窗口):

Hoofdmenu.updateStatistics(); 
Hoofdmenu.Visibility = Visibility.Visible; 
this.Visibility = Visibility.Hidden; 

但是再次,这次当站在主窗口(所以窗口1隐藏)我想关闭窗口1,但使用W1.Close()似乎并没有工作。所以我正在寻找一种方法来关闭那个窗口1,而不是改变它的知名度。

EDIT 2 - 解决方案

因此,使用W1.Close();没有工作,虽然小的变化this.W1.Close();事实上的确:)工作

+0

你为什么要隐藏窗户不关闭?你能发表更多的示例代码来澄清你在做什么吗?关闭时所做的任何事情都会打破关闭信号? – Beachwalker 2012-01-28 13:34:37

+0

在window1中,点击了一些按钮,改变了它的外观。我可以确定这个窗口并未真正关闭,因为否则它们将被重置为默认值,而这种情况并未发生。我会看看我是否可以编辑上面的一些更使它更清晰。 – Dante1986 2012-01-28 13:39:24

+0

你可以把W1。在Try Catch块中关闭()并发布异常? – Paparazzi 2012-01-28 13:56:22

回答

1

可以在窗口和intialize创建窗体2的对象其可见性为虚假。

在按一下按钮就可以simpliy说

public partial class MainWindow : Window 
    { 
    private Window1 window2; 

    public MainWindow() 
    { 
     InitializeComponent(); 
     this.window2 = new Window1(); 

     this.window2.Show(); 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     this.window2.Visibility = System.Windows.Visibility.Hidden; 
    } 
    } 

,使其阅读你的代码后,再次

+0

this.window2.Close();也适用,如果你想关闭它 – Mohit 2012-01-28 13:45:43

+0

哦,你已经做好了,很酷 – Mohit 2012-01-28 13:53:27

+0

编辑你的文章,并清除来评论这里为未来的可读性:) – Dante1986 2012-01-28 13:54:30

0

可见,那是不可能的,你想要的方式。 window1实例是本地对象。所以如果采用这种方法,你无法实现它。 最好的办法是在window1上用close.key() 关闭按钮,或者在主窗口中创建一个全局实例,然后检查是否为空,然后关闭它。