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

时间:2015-10-08 17:37:51

标签: c# wpf forms transfer

尝试从主窗体中获取数据到表单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 个答案:

答案 0 :(得分:1)

有两种方法可以在两个类之间“传递数据”。最简单的方法是在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

答案 1 :(得分:0)

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

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

当您单击打开按钮时,您将为这些变量分配值,但如果要在另一个窗口中访问它们,请提及窗口名称,然后提及类名称。 检查此代码是否有效?

`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();
}
}`