2015-05-09 113 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