C# 如何在C中将数据从子窗体发送到父MDI窗体或从父MDI发送到子窗体?

C# 如何在C中将数据从子窗体发送到父MDI窗体或从父MDI发送到子窗体?,c#,asp.net,winforms,C#,Asp.net,Winforms,我有一家valuelet公司的子公司。我希望在MDI父窗体的级别中传递此值 在子表单中,我从datagrid视图中的数据库检索数据。 现在,我从datagrid视图中选择一个值 字符串SkillName=dataGridView1.CurrentRow.Cells[SHORTS].Value.ToString 现在我想把这个SkillName值传递给MDI父窗体。 如何实现这一点?最简单的方法是将companyId作为参数传递给表单的构造函数 例如,在公司形式中: public partial

我有一家valuelet公司的子公司。我希望在MDI父窗体的级别中传递此值


在子表单中,我从datagrid视图中的数据库检索数据。 现在,我从datagrid视图中选择一个值

字符串SkillName=dataGridView1.CurrentRow.Cells[SHORTS].Value.ToString

现在我想把这个SkillName值传递给MDI父窗体。
如何实现这一点?

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

例如,在公司形式中:

public partial class CompanyForm : Form
{
    public CompanyForm(int companyId)
    {
        InitializeComponent();
    }
}
调用新表单时,只需从调用表单传递值:

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

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

例如,在公司形式中:

public partial class CompanyForm : Form
{
    public CompanyForm(int companyId)
    {
        InitializeComponent();
    }
}
调用新表单时,只需从调用表单传递值:

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

有无数种方法可以做到这一点。这完全取决于你想做什么以及为什么。 @f0x方式很好,但也可以使用公共参数,创建事件并在需要时弹出它,设置标志可以是全局标志等等

如果您想将简单数据从父级传递给子级,您可以像f0x所说的那样,在构造函数中进行传递,或者让子级注册一个您执行的事件,该事件发送一个字符串/int/等,然后您可以在父级需要时执行该事件,子级立即处理该数据

它可以反过来:当父对象创建子对象时,它会注册子对象触发的事件

以下是一个例子:

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");
     }
  }
}

有无数种方法可以做到这一点。这完全取决于你想做什么以及为什么。 @f0x方式很好,但也可以使用公共参数,创建事件并在需要时弹出它,设置标志可以是全局标志等等

如果您想将简单数据从父级传递给子级,您可以像f0x所说的那样,在构造函数中进行传递,或者让子级注册一个您执行的事件,该事件发送一个字符串/int/等,然后您可以在父级需要时执行该事件,子级立即处理该数据

它可以反过来:当父对象创建子对象时,它会注册子对象触发的事件

以下是一个例子:

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");
     }
  }
}

你们能展示你们到目前为止做了什么来解决这个问题吗?在子表单中,我在datagrid视图中从数据库检索数据。现在,我从datagrid视图中选择一个值。字符串SkillName=dataGridView1.CurrentRow.Cells[SHORTS].Value.ToString;现在我想把这个SkillName值传递给MDI父窗体。我如何做到这一点?您能展示到目前为止您是如何解决这个问题的吗?在子表单中,我在datagrid视图中从数据库检索数据。现在,我从datagrid视图中选择一个值。字符串SkillName=dataGridView1.CurrentRow.Cells[SHORTS].Value.ToString;现在我想把这个SkillName值传递给MDI父窗体。我该怎么做?