【问题标题】:how to call function that is in window1 from window2如何从window2调用window1中的函数
【发布时间】:2016-12-25 10:56:18
【问题描述】:

我有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("some text"); 声明了一个 MessageBox它有效。

这只是我想通过的一个测试。我的最终想法是在 Window1 中有一个方法,该方法将包含用于 sql 插入查询的代码,以及来自 Window1 的文本框,我需要在之后调用该方法在 Window2 上单击了一个按钮。

【问题讨论】:

标签: c# wpf


【解决方案1】:

您正在创建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 一样对待它可以“工作”,但它很笨重,并没有真正利用可用的工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 2016-03-26
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    相关资源
    最近更新 更多