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

測試通過沒問題 ~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM