【问题标题】:How I send a data from child form to parent MDI form or parent MDI from to child form in C#?如何在 C# 中将数据从子窗体发送到父 MDI 窗体或从父 MDI 发送到子窗体?
【发布时间】:2013-07-24 14:20:28
【问题描述】:

我有一个子表单中的值(让 CompanyId)。我想在 MDI 父窗体的级别中传递这个值。

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

string SkillName = dataGridView1.CurrentRow.Cells["SHORTS"].Value.ToString();

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

【问题讨论】:

  • 你能展示你到目前为止为解决这个问题所做的工作吗?
  • 在子表单中,我在数据网格视图中从数据库中检索数据。现在我从数据网格视图中选择一个值。字符串 SkillName = dataGridView1.CurrentRow.Cells["SHORTS"].Value.ToString();现在我想将此 SkillName 值传递给 MDI 父窗体。我该怎么做?

标签: c# asp.net winforms


【解决方案1】:

实际上有无数种方法可以做到这一点。这一切都取决于你想做什么以及为什么。 @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");
     }
  }
}

【讨论】:

    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      相关资源
      最近更新 更多