有两个窗体  第一个负责用DataGridView显示数据--它负责数据的select insert update
            第二个负责增加修改数据(双击DataGridView可以获得数据进行修改)
问怎么写才能在第二个窗口操作完成点击保存时 第一个窗口实时完成insert或者update呢?
谢谢大侠们帮帮小弟!!!

解决方案 »

  1.   

    你可以在第二个窗体中,定义需要增加的字段属性(可以为只读)在第二个窗口关闭时,在第一个窗口中获取这些属性值,并创建sql语句,然后insert。
      

  2.   

    这样做就行了,你让第一个执行select的窗体在获得焦点的时候重新绑定数据。
    以前做过一个这样的东西。就是利用获得焦点的事件实现的。
      

  3.   

    在第一个窗口里面写好的你的UPDATE的方法,把第一个窗口的实例传到第二个窗口,在第二个窗口点击确定的时候直接调用调用第一个窗口里的方法就可以了
      

  4.   


     public class Form1:Form
        {
            //你要最终想要调用的方法
            public void insert(string 参数)
            {
     
            }
            public void update(string 参数)
            {
     
            }
            //把第二个窗口打开
            private void ShowForm2()
            {
                Form2 f = new Form2(this);
            }    }
        public class Form2:Form
        {
            Form1 f;
            public Form2(Form f)
            {
                this.f = f;
            }
            //假设这个就是你的“第二个窗口操作完成点击保存”的事件
            private void ButtonClick()
            {
                f.insert("参数");
                f.update("参数");
            }
        }
      

  5.   

    用委托还是要取得FORM1的实例的要不然写一个公共类也可以,把增删改查的方法都写到公共类里
      

  6.   

    Form1:显示数据 ,Form2:更新数据
    Form1:
      prvite void UpdataGridView()
    {
    //更新方法
    }  private void botton1_Click(object sender, EventArgs e)
    {//显示Form2
     Form2 f2 = new Form2();
    f2.Updata += new UpdataHander(UpdataGridView)
    f2.show();
    }
    Form2:
    public delegate void UpdataHander();
    public UpdataHander Updata;private void botton1_Click(object sender, EventArgs e)
    {//修改gridview
      //修改代码   Updata();
    }
    直接写的估计出错,自己在调调
      

  7.   

    子窗体
            // 使用委托调用主窗体的刷新按钮,刷新dataGridview
            public delegate void UseButton(object sender, EventArgs e);
            public event UseButton NewEvent;子窗体操作按钮下执行事件
                        //执行事件
                        if (NewEvent != null)
                            NewEvent(this, new EventArgs());
    主窗体Show子窗体时订阅事件
     //订阅更新事件
                    frm.NewEvent+=new frmGoodsChild.UseButton(btnQuery_Click);
      

  8.   

    15楼 注
    改为
    Form2:
    public delegate void UpdataHander();
    public  event UpdataHander Updata;
      

  9.   

    1.Form1中绑定DataGridView的方法:void BindData()
    2.Form2中执行insert,update,调用Form1中的BindData()刷新Form1的DataGridView
    3.创建委托类型:public delegate void MyDelegate();
    4.Form2的构造方法:(Form2中加入成员:MyDelegate myDelegate;)
    Form2(MyDelegate myDelegate)
    {
        this.myDelegate = myDelegate;
    }
    5.创建Form2时:
    MyDelegate myDelegate = new MyDelegate(BindData);
    Form2 form2 = new Form2(myDelegate);
    form2.Show();
    6.在Form2的保存按钮中执行: myDelegate();// 此时即执行了Form1中的BindData,从而刷新了DataGridView。