从子窗口刷新父窗体

时间:2016-08-20 05:03:16

标签: c# forms

我在关闭子窗口窗体后尝试刷新父窗口时遇到问题。这是我的代码:

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

我在这里要做的是保存数据并关闭子窗体,并通过检索要显示的新数据来刷新父窗口。我在这里错过了什么吗?虽然我明白子窗口窗体不应该控制父窗口。想想看,孩子要求家长更新信息。

2 个答案:

答案 0 :(得分:1)

回答Aniruddha Varma是对的。

您有两种形式:父母与子女。

在父母身上,我们将根据您的需要显示Child Form:

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

而且,我们还要声明一个公共方法来编辑你的表单控件,如下所示:

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

之后,我们进入子表格。在这里,我们将声明Form事件“FormClosing”或按钮以关闭表单以下代码:

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

有了这个,我们将把Parent实例收回到Child中,然后回调Method SetTex,我们在其中传递我们的文本参数。回顾第一个表单,我们将使用Child's Form中的文本更新Parent的文本框。

答案 1 :(得分:0)

父表单代码:

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

儿童表格代码:

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

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