我有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上单击一个按钮。
答案 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 一样处理它可以"工作" ,但它很笨重,并没有真正使用可用的工具。