我在子表单中有一个值(让 CompanyId)。我想在 MDI 父窗体的级别中传递这个值。
在子表单中,我在数据网格视图中从数据库中检索数据。现在我从数据网格视图中选择一个值。
字符串 SkillName = dataGridView1.CurrentRow.Cells["SHORTS"].Value.ToString();
现在我想将此 SkillName 值传递给 MDI 父窗体。我怎样才能做到这一点?
确实有无数种方法可以做到这一点。这一切都取决于你想做什么以及为什么。@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");
}
}
}
最简单的方法是将companyId
作为参数传递给表单的构造函数。
例如在公司表格中:
public partial class CompanyForm : Form
{
public CompanyForm(int companyId)
{
InitializeComponent();
}
}
当您调用新表单时,只需传递调用表单中的值:
var form = new CompanyForm(10); // '10' the id
form.MdiParent = this;
form.Show();