2015-05-09 116 views
0

我有一個兩個窗口的應用程序。我從我的主窗口打開windows2。我想在window2關閉時更新mainWindow(例如更改文本)。我怎麼能做到這一點。當Window2關閉時更新主窗口?

這裏是我的主窗口

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     Window2 secondForm; 

     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, RoutedEventArgs e) 
     { 
      secondForm = new Window2(); 
      secondForm.Show(); 
     } 
    } 
} 
+0

您可以通過傳遞MainWindow引用來實現此目的。 – kanchirk

+0

@kanchirk你能分享一個例子嗎? –

+0

@ uesr1936285讓我知道,如果你沒有按照下面粘貼的例子中的內容。 – kanchirk

回答

1
private void Button_Click(object sender, RoutedEventArgs e) { 
     SecondForm form = new SecondForm(); 
     form.Closed += form_Closed; 
     form.Show(); 
    } 

    void form_Closed(object sender, EventArgs e) { 
     llMsg.Content = "The second form is closed"; 
    } 
-1

您可以通過傳遞一個參考的主窗口做到這一點。

添加名爲型窗口的主窗口屬性在窗口2類

public Window MainWindow { get;set;} 

然後更新Button1_Click的方法如下。

private void button1_Click(object sender, RoutedEventArgs e) 
      { 
       secondForm = new Window2(); 
       secondForm.MainWindow = this; 
       secondForm.OnClosing += (sfO,sfE)=>{ if(MainWindow!=null){ 
MainWindow.SomeProperty = "Second Window was closed."; 
} }; 
       secondForm.Show(); 
      } 

我正在使用Lambda表達式語法來捕獲OnClosing事件。

+0

請不要教極端的壞習慣。應該更新'MainWindow'的唯一形式是MainWindow本身。 'secondForm'應該返回一個MainWindow接收並執行的值。 – slugster

+0

@slugster你有一個好點。你能舉一個例子來完成同樣的事情嗎?會很感激。 – kanchirk