有两个窗体Form1 ,Form2
Form1中有一个DataGrid1 和 一个Button btnShowForm2
Form2中有两个TextBox txtID和txtName 和 一个Button btnOK(新增)
当启动Form1的时候,点击按钮btnShowForm2时,调出Form2对话框,在txtID和txtName 中输入值,
后点击按钮btnOK时,就把txtID 和txtName 中的值保存到数据库表users中去,要同时刷新DataGrid1 , 条件是:Form2是不能关闭的,希望高手指点,谢谢!在线等。加我的QQ是403835108
急 !急!
Form1中有一个DataGrid1 和 一个Button btnShowForm2
Form2中有两个TextBox txtID和txtName 和 一个Button btnOK(新增)
当启动Form1的时候,点击按钮btnShowForm2时,调出Form2对话框,在txtID和txtName 中输入值,
后点击按钮btnOK时,就把txtID 和txtName 中的值保存到数据库表users中去,要同时刷新DataGrid1 , 条件是:Form2是不能关闭的,希望高手指点,谢谢!在线等。加我的QQ是403835108
急 !急!
CON-如何在子窗体(被调用者)中实现对其父窗体(调用者)的刷新呢?
网络上有几种方法,先总结如下:
调用窗体(父):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:委托法
//声明一个委托
public delegate void DisplayUpdate();
//Form1:
//需要有一个公共的刷新方法
public void Refresh_Method()
{
//...
}
//调用时
Form2 f2 = new Form2() ;
f2.ShowUpdate += new DisplayUpdate(Refresh_Method) ;
f2.Show() ;
//Form2:
//声明事件
public event DisplayUpdate ShowUpdate;
//刷新时,放在需要执行刷新的事件里
ShowUpdate();
这样不知道可以不
Form1:
btnShowForm2_Click()
{
Form2 f2 = new Form2();
f2.Owner = this;
f2.Show();
}public void Refresh_DataGrid1(string id,string name)
{
//根据id/name来刷新DataGrid1
}Form2:
btnOK_Click()
{
//保存到数据库
Save2DB(txtID.Text,txtName.Text);
//刷新主表的DataGrid1
Form1 f1 = (Form1)this.Owner;
f1.Refresh_DataGrid1(txtID.Text,txtName.Text);
//如果需要立即关闭,则
//this.Close();
}
private void Save2DB(string id,string name)
{
//具体实现
}
唯一没有完成的是:Save2DB,Refresh_DataGrid1两个方法。因为我不知道你的程序如何来做,其实你只要实现了这两个方法,就完全可以了。