在两个 wpf 表单之间将数据作为字符串传递

Passing data between two wpf forms as strings

正在尝试从主窗体获取数据到窗体2。主窗体有一个文本框 和一个按钮。当按下按钮时,它会打开表单 2,它将在主表单中输入的数据显示为一系列文本块。

但是我无法让数据在表单之间传输。代码如下。 任何人都可以帮助或建议我可以做些什么吗?

WPF 1 主窗体:

public partial class MainWindow : Window
{



    public MainWindow()
    {
        InitializeComponent();
    }

    private void btnOpenForm_Click(object sender, RoutedEventArgs e)
    {
        //btnset: Takes the values contained in the text boxes and updates   
        //the student class
        //properties.
        Student.sFname = firstname.Text;
        Student.sSname = secondname.Text;
        Window1 details = new Window1();
        details.Show();
    }

WPF 2 代码:

 public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
    }

    private void details_Load(object sender, EventArgs e)
    {
        Fname.Text = Student.sFname;
        Sname.Text = Student.sSname;
    }
    private void Close_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
    }
}

有很多方法可以在 2 类 之间 "pass data"。最简单的方法是在 Window1 上公开 属性 或方法,然后只设置您需要传递的文本。另一种方法是在 Window1 上创建一个将数据作为参数的构造函数。下面是演示这些方法的代码。

public class Program
{
    public static void Main(string[] args)
    {
        var c1 = new Class1();

        c1.DoStuff();
    }
}

public class Class1
{
    public void DoStuff()
    {
        var c = new Class2("stuff");

        var c2 = new Class2();
        c2.AcceptStuff("stuff2");

        c.Print();
        c2.Print();

        c2.MyData = "stuff3";
        c2.Print();
    }
}

public class Class2
{     
    private string _myData;

    public Class2() 
    {

    }

    public Class2(string myData)
    {
        _myData = myData;
    }        

    public string MyData
    {
        set { _myData = value;}
    }

    public void AcceptStuff(string myData)
    {
        _myData = myData;
    }

    public void Print()
    {
        Console.WriteLine(_myData);
    }
}

打印

stuff
stuff2
stuff3

我假设您在 MainWindow 中有一个 class,例如:

`Public class Student
{
public static string sFname;
public static string sSname;
}`

当您单击打开按钮时,您正在为这些变量赋值,但如果您想在另一个 window 中访问它们,请提及 window 名称,然后提及 class 名称。 检查此代码是否有效?

`public partial class Window1 : Window
{
public Window1()
{
    InitializeComponent();
}

private void details_Load(object sender, EventArgs e)
{
    Fname.Text = MainWindow.Student.sFname;
    Sname.Text = Mainwindow.Student.sSname;
}
private void Close_Click(object sender, RoutedEventArgs e)
{
    this.Close();
}
}`