从子窗口刷新父窗口窗体

本文关键字:窗口 窗体 刷新 | 更新日期: 2023-09-27 18:03:08

我在关闭子窗口窗体后试图刷新父窗口窗体时遇到麻烦。下面是我的代码:

private void btnSave_Click(object sender, EventArgs e)
    {
        BusinessClient bc = new BusinessClient();
        bc.CompanyName = txtCompanyName.Text;
        bc.PointOfContact = txtPointOfContact.Text;
        bc.Address1 = txtAddressOne.Text;
        bc.Address2 = txtAddressTwo.Text;
        bc.City = txtCity.Text;
        bc.State = cbxState.Text;
        bc.Zip = txtZip.Text;
        bc.Phone = txtPhone.Text;
        bc.Email = txtEmail.Text;
        BusinessClientMgr bcMgr = new BusinessClientMgr();
        bcMgr.StoreNewBusinessClient(bc);
        AfterTheSave();
        AssignmentForm assignForm = new AssignmentForm();
        assignForm.Refresh();
        this.Close();
    }

我在这里要做的是保存数据并关闭子窗口表单,并通过检索要显示的新数据刷新父窗口表单。我遗漏了什么吗?虽然我理解子窗口窗体不应该控制父窗体。仔细想想,孩子是在要求父母更新信息。

从子窗口刷新父窗口窗体

Aniruddha Varma的回答是正确的。

你有两个窗体:Parent和Child。

在父窗体中,我们将在需要的地方显示子窗体:

Form2 child = new Form2();
child.Show(this); //We pass through the Parent instance to Child

同时,我们要声明一个公共方法来编辑你的任何表单控件像这样:

public void SetText(string text)
{
    parentTextbox.Text = text;
}

之后,我们传入子窗体。在本例中,我们将在表单事件上声明"FormClosing"或一个按钮来关闭表单,代码如下:

 Form1 parent = (Form1) Owner;
 parent.SetText(childTextbox.Text);

有了这个,我们将把Parent实例收回到Child中,然后回调SetTex方法,我们将参数传递给我们的文本。回顾第一个表单,我们将使用子表单中的文本更新父表单的文本框。

父窗体代码:

var child = new ChildForm();
child.Show(this);

子窗体代码:

var myParent = (MainForm)this.Owner;
myParent.ParentMethod();

MainForm是父表单,ChildForm是要显示的新表单。