您当前的位置: 首页 > 

[Winform]winform 刷新父窗体(转)

发布时间:2016-04-10 13:58:58 ,浏览量:0

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

测试通过没问题 ~~~

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    105936博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0492s