我在关闭子窗口窗体后尝试刷新父窗口时遇到问题。这是我的代码:
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();
}
我在这里要做的是保存数据并关闭子窗体,并通过检索要显示的新数据来刷新父窗口。我在这里错过了什么吗?虽然我明白子窗口窗体不应该控制父窗口。想想看,孩子要求家长更新信息。
答案 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
是您要显示的新表单。