有两个窗体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
急 !急!

解决方案 »

  1.   

    1。传值方法:
    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();
      

  2.   

    我的想法是 在Form2 的按钮事件里将数据存到数据库中,不用javascript刷新父窗口(Form1)
      这样不知道可以不
      

  3.   

    2。根据以上方法,如何实现你的要求:
    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)
    {
      //具体实现
    }
      

  4.   

    javascript?你的程序是winform的还是webform的?
      

  5.   

    上面的程序及思路是针对winform的。
      

  6.   

    是winForm的,lovvver(www.notsoft.cn) 帮我写个示例程序,谢谢
      

  7.   

    哦,那上面我提供的思路已经可以满足你的要求了。
    唯一没有完成的是:Save2DB,Refresh_DataGrid1两个方法。因为我不知道你的程序如何来做,其实你只要实现了这两个方法,就完全可以了。
      

  8.   

    lovvver(www.notsoft.cn)加一下你的QQ的,或加我的403835108