2012-03-22 142 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