我有两个窗体,第一个窗体用DataGridView显示数据(数据来自DataSet,BindingSource跟DataGridView绑定),还有一个添加按钮,点击这个按钮跳转到Form2 在Form2上填写要添加的数据,完了点保存按钮。保存成功后数据库修改成功,但是DatagridView不能同步更新。只能重新启动程序。 请问怎么解决?

解决方案 »

  1.   

    1,将数据绑定写成方法
    2,窗体传参只讲逻辑,代码自己完善,这样才能提高:
    1,窗体1:
       Form1_Load()
      {
          bind();
      }
      public void bind()   //数据绑定方法,注意访问级别为public以供Form2窗体访问
      {
       //连接数据库提取数据,将数据绑定到DGV显示出来
      }
      //打开添加数据窗口的事件
      private void button_adddata_Click(object sender,EventArgs e)
      {
          Form2 f2=new Form2(this);  //注意将Form1作为参数传递
           f2.ShowDialog();   //我习惯添加数据窗体为ShowDialog出来的,你自己斟酌处理
      }2,添加数据的窗体
    <1>在Form2窗体的构造函数中构造窗体1实例以便调用绑定数据方法
       Form1 f1=new Form1();
       public Form2(Form1 frm1)
       {
          f1=frm1;
          InitialzeComponent();
       }<2>数据添加成功后
       .............
       MessageBox.Show("数据添加成功!");
       f1.bind();   //调用窗体1的数据绑定方法
       this.Close();   //关闭添加数据的窗体
       ..................            //你其他的方法
      

  2.   

    form1中单击按钮的代码:        
    private void button1_Click(object sender, EventArgs e)
            {
                Form2 form = new Form2();
                form.ShowDialog();
                this.tbTableAdapter.Fill(this.ksDataSet1.Tb);
            }
    form2点击保存的代码:
            private void button1_Click(object sender, EventArgs e)
            {
                if (this.ksDataSet2.HasChanges())
                {
                    this.tbTableAdapter.Update(this.ksDataSet2);
                    MessageBox.Show("修改成功!!");
                }
                else
                {
                    MessageBox.Show("未做任何修改!!");
                }
                Close();
            }