我如何将子表单中的数据发送到父MDI表单或父MDI从C#中的子表单发送?

时间:2013-07-24 14:20:29

标签: c# asp.net winforms

我有一个儿童形式的值(让CompanyId)。我想在MDI父表单的级别中传递此值。

在子窗体中,我在数据网格视图中从数据库中检索数据。 现在我从datagrid视图中选择一个值。

string SkillName = dataGridView1.CurrentRow.Cells [“SHORTS”]。Value.ToString();

现在我想将此SkillName值传递给MDI父窗体。 我该怎么做?

2 个答案:

答案 0 :(得分:2)

最简单的方法是将companyId作为参数传递给表单的构造函数。

例如,以公司形式:

public partial class CompanyForm : Form
{
    public CompanyForm(int companyId)
    {
        InitializeComponent();
    }
}

当您致电新表单时,只需传递调用表单中的值:

var form = new CompanyForm(10); // '10' the id 
form.MdiParent = this;
form.Show();

答案 1 :(得分:2)

实际上有无数种方法可以做到。这一切都取决于你想做什么以及为什么。 @ f0x的方式很好,但也可以使用public参数,创建一个事件并在需要时弹出它,设置一个标志(可能是一个全局标志)等等。

如果你想将简单的数据从父传递给子,你可以在构造函数中执行它,如f0x所说,或者让子注册一个你执行的事件,发送一个字符串/ int / etc。然后只要您(父母)想要并且孩子立即处理该数据,您就可以执行该事件。

它可以反过来:当父母创建孩子时,它会在孩子开火的事件上注册......

这是一个例子:

public partial class Form1 : Form
{

  public void RegisterSon()
  {
     ChildForm frm = new ChildForm();
     frm.MyEventChild += new MyEvntHndler(frm_MyEventChild);
  }

  void frm_MyEventChild(string data)
  {

  }
}

public delegate void MyEvntHndler(string data);

public class ChildForm: Form
{
  public event MyEvntHndler MyEventChild;

  private void button1_Clicked(object sender, EventArgs e)
  {
     if (MyEventChild != null)
     {
        MyEventChild("This is my data");
     }
  }
}