网络上有几种方法,先总结如下: 调用窗体(父):Form1,被调用窗体(子):Form2 方法1: 所有权法 //Form1: //需要有一个公共的刷新方法 public void Refresh_Method() { //... } //在调用Form2时,要把Form2的所有者设为Form1 Form2 f2 = new Form2() ; f2.Owner = this; f2.ShowDialog() ; //Form2: //在需要对其调用者(父)刷新时 Form1 f1 ; f1 = (Form1)this.Owner; f1.Refresh_Method() ; 方法2:自身传递法 //Form1: //需要有一个公共的刷新方法 public void Refresh_Method() { //... } Form2 f2 = new Form2() ; f2.ShowDialog(this) ; //Form2: private Form1 p_f1; public Form2(Form1 f1) { InitializeComponent(); p_f1 = f1; } //刷新时 p_f1.Refresh_Method() ; 方法3:属性法 //Form1: //需要有一个公共的刷新方法 public void Refresh_Method() { //... } //调用时 Form2 f2 = new Form2() ; f2.P_F1 = this; f2.Show() ; //Form2: private Form1 p_f1; public Form1 P_F1 { get{return p_f1;} set{p_f1 = value;} } //刷新时 p_f1.Refresh_Method() ; 方法4:委托法 //Form1: //需要有一个公共的刷新方法 public void Refresh_Method() { //... } //调用时 Form2 f2 = new Form2() ; f2.ShowUpdate += new DisplayUpdate(Refresh_Method) ; f2.Show() ; //Form2:
//声明一个委托 public delegate void DisplayUpdate(); //声明事件 public event DisplayUpdate ShowUpdate; //刷新时,放在需要执行刷新的事件里 ShowUpdate();
//子窗体提交后 private void btnOK_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.OK; this.Close(); } //判断子窗体 if(form.ShowDialog() == DialogResult.OK) { 刷新父窗体中的DataGRIDVIEW数据 }
-----------------------------------------------------------------------------------------------------------
以上是在网上转载的。
我用的方法如下:
父窗体FrmMain 子窗体:FrmUpdateUser
父窗体的刷新方法 :
在调用子窗体的地方写以下代码:
在子窗体修改数据后 写以下代码:
private void c1Button1_Click(object sender, EventArgs e) { if (txtLoginName.Text.Trim() != wbl.GetModel(fmain.LoginID).LoginName.Trim()) { //说明用户名有改动 要检查是否重复! if (wbl.Exists(txtLoginName.Text.Trim())) { MessageBox.Show("对不起,此用户名已存在!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtLoginName.Focus(); return; } else { Model .Login model=new Model.Login (); model .LoginName =txtLoginName .Text.Trim(); model .LoginPass =txtLoginPass.Text.Trim(); model.LoginID = fmain.LoginID; wbl.Update(model); MessageBox.Show("更新成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); FrmMain fmm= (FrmMain )this.Owner ; fmm.BindListLogin(); this.Close(); } } }
测试通过没问题 ~~~