2016-08-18 47 views
1

我有窗口1,具有发送如何调用函数,在窗口1从窗口2

public void proba() 
     {     
       MessageBox.Show(this.comboBoxTipUnosa.Text); 

     } 

和一个按钮的功能单击它具有

Window2 win2= new Window2(); 
win2.textBoxOne.Text = selectedString; 
win2.ShowDialog(); 

如果从窗口2,在按钮点击我的代码去

Window1 win1 = new Window1(); 
win1.proba(); 

得到了一个空白messagebox.But如果一个MessageBox与MessageBox.show(“一些文本”)申报;有用。

这只是一个测试,我希望通过。我的最终想法是在Window1中有一个用于插入SQL查询的代码,使用Window1中的文本框,我将需要调用该方法在Window2上单击一个按钮后。

+0

将公共逻辑重构为每个表单可以使用的单独类。 –

+1

[如何使C#类中的方法调用另一个可能的重复?](http://stackoverflow.com/questions/16226444/how-to-make-method-call-another-one-in-classes-c) –

回答

3

你正在创建一个新实例的Window1

Window1 win1 = new Window1(); 

这意味着this.comboBoxTipUnosa.Text在该实例空。

而是将现有的实例传递给Window2。首先,期望它在构造函数中Window2

private Window1 window1Instance; 

public Window2(Window1 window1) 
{ 
    this.window1Instance = window1; 
} 

然后通过参考创建Window2时:

然后在Window2可以参考现有的实例:

this.window1Instance.proba(); 

备注:这是一个“WinForms”做事的方式。尽管我不会声称自己是WPF/MVVM专家,但您绝对应该将重点放在学习WPF中使用的模式和实践上。处理它像WinForms 可以“工作”,但它很笨重,并没有真正使用可用的工具。

+0

谢谢,这是我需要的! – nscott23

相关问题