2012-03-22 73 views
0

我正在开发一个在VB.NET中的WPF项目,并在其中有多个窗口。当用户选择菜单项时,会打开一个新窗口,问题出在用户单击其他菜单项时,当前窗口应该自行关闭。 我如何实现它? 谢谢!WPF中只能打开一个窗口?

+0

嗯,我是很新的节目。我尝试了这样的事情Dim win3 As New Window3,win3.Show() – WPFcitizen 2012-03-22 06:26:22

+0

没问题。在方法之外放置'Dim win3 As New Window3'。在同一个类中的任何方法内,您可以调用'win3.Show()'和'win3.Close()'在Dim之前公开并且可以通过其他类获得。在任何窗口的代码隐藏内,你可以调用'Me.Close()' – Silvermind 2012-03-22 08:07:50

回答

1

我想你的意思是这基于您的评论:

Class MainWindow 

    Public Win3 As Window3 = New Window3() 

    Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click 
    Win3.Show() 
    Me.Close() 
    End Sub 

End Class 
+0

谢谢。那工作。那么问题是我必须明确地关闭窗口。我不想这样做。如果我点击任何其他窗口,当前打开的窗口应该关闭。谢谢! – WPFcitizen 2012-03-22 16:40:53

0

有两种方法可以做到这一点:

如果菜单项共享相同的形式,然后在表单中创建一个子程序,你打电话,而不是新的,来检查它是否已经显示/创建,如果不会打开(因为您已经拥有)。如果打开,则用新信息重新加载。

否则打开新的形式去虽然开放形式(从this网站在C#如下所示)前:

FormCollection fc = Application.OpenForms; 

foreach (Form frm in fc) { 
     //iterate through 
} 

每种形式检查,如果它的名字是等于菜单项之一,如果它是关闭它(如果需要保存后)。然后在退出for循环后,打开新的菜单项。

+1

他问的是WPF :) – Silvermind 2012-03-22 06:20:40

+0

ahh谢谢。我误解了:) – Kyra 2012-03-22 18:50:31