c#中的表单刷新问题
本文关键字:刷新 新问题 表单 | 更新日期: 2023-09-27 18:01:33
我有两个表单表单A和表单B。当用户单击表单A上的按钮时,将出现表单B,但表单A已经打开。用户可以在表单B中设置数据。当用户单击表单B中的添加按钮时,数据将传递给表单A和表单A中的文本框用传递数据设置数据。我收到了传递的数据,但是表格A的文本框没有填写数据。我怎么能那样做呢?
在表单B中添加按钮,单击
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();
}
在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线程(其中你可能想要做一些异步)。
当你在形式b中调用NewEmployee emp = new NewEmployee();
时,你正在创建对形式a的新实例的引用(这是'NewEmployee',对吧?),但你从未实际显示此实例。当你调用emp.FillAddressGrid(empAdd);
时,你是在一个隐藏的实例上操作,而不是你可以看到的那个。
当你创建一个表单B的实例时,你需要传递一个引用到表单B,如:
FormB formB = new FormB();
formB.Owner = this;
fromB.show();
这将使您能够稍后调用:
((NewEmployee)Owner).FillAddressGrid(empAdd);
从表格B获取数据到表格A,将接收到的数据存储在一个变量中,并将该变量赋值给文本框。就像,textbox1.text = v.tostring ();