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

c#中的表单刷新问题

在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 ();