如何从window2调用window1中的函数

时间:2016-08-18 13:23:55

标签: c# wpf

我有Window1,它有一个发送

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

        }

并点击按钮

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

如果来自Window2,点击按钮我会使用代码

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

我得到一个空白的消息框。但是如果使用MessageBox.show声明MessageBox("某些文本");它有效。

这只是我想要得到的一个测试。我的最终想法是在Window1中有一个方法,它将具有sql insert查询的代码,使用来自Window1的文本框,我将需要在之后调用该方法在Window2上单击一个按钮。

1 个答案:

答案 0 :(得分:3)

您正在创建Window1新实例

Window1 win1 = new Window1();

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

相反,将现有实例传递给Window2。首先,期望它在Window2

中的构造函数上
private Window1 window1Instance;

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

然后在创建Window2时传递引用:

Window2 win2 = new Window2(this);

然后在Window2中,您可以引用现有实例:

this.window1Instance.proba();

注意:这是非常" WinForms"做事的方式。虽然我不会声称自己是WPF / MVVM专家,但你应该把重点放在学习WPF中使用的模式和实践上。像WinForms 一样处理它可以"工作" ,但它很笨重,并没有真正使用可用的工具。