从子窗口刷新父窗口窗体
本文关键字:窗口 窗体 刷新 | 更新日期: 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
是要显示的新表单。