我们如何将数据从一个打开的表单传递到另一个?

时间:2012-02-09 02:53:47

标签: winforms

我们如何在winform中将数据从一个表单传递到另一个打开的表单?

在Windows应用程序中,一个表单打开另一个表单。当我以父表格输入一些数据时,那将立即反映在另一个子表单中。

这将如何发生?

2 个答案:

答案 0 :(得分:1)

取决于你想得到多么花哨。

最简单的方法就是直接调用方法。

家长

_child = new ChildForm();

然后,当您检测到更新(TextChanged,SelectedIndexChanged等)时

_child.UpdateData(someDataCollectedFromParent)

儿童

public void UpdateData(MyObject data)
{
    textBox1.Text = data.FirstName;
    textBox2.Text = data.SecondName;
}

除此之外,您可以构建消息传递机制或查看DataBinding基础结构。

答案 1 :(得分:0)

您也可以为MyObject使用System.ComponentModel.INotifyPropertyChanged。

public class MyObject : INotifyPropertyChanged
{
     public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
     private object _data1;

     public object Data1
     {
       get{ return _data1;}
       set 
       { 
           _data1=value; 
           PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Data1"));
       }
     }
}

然后在您的子表单中,指定一个函数以更新新数据来接收此事件,如下面的代码所示:

myObject1.PropertyChanged += new PropertyChangedEventHandler(m_PropertyChanged);

和m_PropertyChanged:

public void m_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
   // update your data here, you can cast sender to MyObject in order to access it
}

此致 S. Peyman Mortazavi