我有两个表格A和B。当用户单击表单A上的按钮时,表单B将显示,但表单A已经打开。用户可以在表单B中设置数据。当用户单击表单B中的添加按钮时,数据将传递到表单A,表单A中的文本框将 使用传递数据设置数据。我收到了传递的数据,但是表格A的文本框没有填写数据。我怎么能这样做?
在表格B中添加按钮clik
private void btnAdd_Click(object sender, EventArgs e)
{
EmployeeAddressEntity empAdd = new EmployeeAddressEntity();
empAdd = AddEmployee();
this.Close();
NewEmployee emp = new NewEmployee();
emp.FillAddressGrid(empAdd);
}
表格A
public void FillAddressGrid(EmployeeAddressEntity emp)
{
txtAddressName.Text = emp.name;
dgvAddress.Rows.Add(emp.type,emp.name,emp.homephone,emp.fax,emp.email,emp.address,emp.country_id);
//int a = dgvAddress.Rows.Count;
dgvAddress.EndEdit();
dgvAddress.Refresh();
dgvAddress.Parent.Refresh();
this.Refresh();
}
答案 0 :(得分:3)
在FormB中,定义一个私有字段,用于存储对FormA的引用,并创建一个自定义构造函数来传递引用。
public FormB(FormA form) {
this.m_FormA = form;
}
private FormA m_FormA;
当您从FormA显示FormB时,请传递参考。
using (FormB form = new FormB(this)) {
form.Show();
}
当您准备好更新FormA时,请致电您的会员功能。
this.m_FormA.FillEmployeeGrid(empAdd);
一旦你完成所有这些工作,你就不需要调用Refresh()来更新UI,除非有什么东西会阻塞UI线程(你可能想要做一些异步)。
答案 1 :(得分:2)
当您在表单b中调用NewEmployee emp = new NewEmployee();
时,您正在创建对FORM A的新实例的引用(这是'NewEmployee',对吗?),但您实际上从未显示此实例。当您调用emp.FillAddressGrid(empAdd);
时,您正在操作一个隐藏的实例而不是您可以看到的实例。
当您创建表单B的实例时,您需要传递对表单B的引用,如:
FormB formB = new FormB();
formB.Owner = this;
fromB.show();
这将使您能够稍后调用:
((NewEmployee)Owner).FillAddressGrid(empAdd);
表格B 。
答案 2 :(得分:-1)
所以你从表格B到表格A获取数据, 将收到的数据存储在一个变量中,并将该变量分配给文本框。 喜欢, textbox1.text = v.tostring();