在WPF C#中将值从一个窗口传递到另一个窗口的麻烦#

时间:2016-02-01 23:25:59

标签: c# wpf inheritance message-passing

我无法理解我的代码出了什么问题。

两个Windows(window1,window2)

我在window1上有一个按钮(button1)和一个textBox(textBox1),在window2上有另一个按钮(button2)和一个textBox(textBox2)

我想要什么:

当我按下button1时,window2将作为一个对话框打开,然后我在textBox2中写的任何内容并按下button2应该使用textBox1中的文本重定向到window1。

问题:

当我点击button2时,没有数据传输到textbox1,它仍然是空的。

我的代码:

public partial class window1: Window
{
    public Window1()
    {
        InitializeComponent();
        textbox.text=cd;
    }

    private string cd;
    public string getCode
    {
        get { return cd; }
        set { cd = value; }

    }


    private void button_Click_1(object sender, RoutedEventArgs e)
    {
        Window2 win2 = new Window2();

        this.Close();
        win2.ShowDialog();
    }

}

这是其他窗口:

public partial class Window2 : Window
{


    private void button_Click(object sender, RoutedEventArgs e)
    {
        Window1 win1 = new Window1();
        win1.getCode = textBox.Text;
        this.Close();
    }
}

任何建议都会非常感激。!

2 个答案:

答案 0 :(得分:2)

安东有答案。如果你想要另一种方式,你可以让第一个窗口成为第二个窗口的所有者,所以现在所有者可以引用回来。我打算写出一些代码,但记得一段时间回来展示它并发现它。看看这个。 How to manipulate a window object from another class in WPF

答案 1 :(得分:1)

您需要将对Window1的引用传递给子窗口:

private void button_Click_1(object sender, RoutedEventArgs e)
{
    Window2 win2 = new Window2();
    win2.Wnd1Reference = this;

    this.Visibility = Visibility.Collapsed;
    win2.ShowDialog();
}

public partial class Window2 : Window
{
    public Window1 Wnd1Reference {get; set;}

    private void button_Click(object sender, RoutedEventArgs e)
    {
        Wnd1Reference.getCode = textBox.Text;
        this.Close();
        Wnd1Reference.Visibility = Visibility.Visible;
    }
}