winform 刷新父窗体

网络上有几种方法,先总结如下:
调用窗体(父):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

父窗体的刷新方法 :

public void BindListLogin()

{

c1FlexGrid1.DataSource = wbl.GetAllList().Tables[0];

}

 在调用子窗体的地方写以下代码:

  private void c1FlexGrid1_DoubleClick(object sender, EventArgs e)

        {

            C1ID = int.Parse(c1FlexGrid1[c1FlexGrid1.Row, 1].ToString().Trim());

           // MessageBox.Show(Convert.ToString(C1ID));

            FrmUpdateUser fuu = new FrmUpdateUser();

            fuu.Owner = this;

            fuu.ShowDialog();

        }

 在子窗体修改数据后 写以下代码:

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

                }

            }

        }

测试通过没问题 ~~~

你可能感兴趣的:(WinForm)