解决方案 »

  1.   

    f1公布 一个public接口,可以接受数据,比如数组,你组织好,调用一下,f1里面接收到然后添加
      

  2.   

    定义个委托,在form1里实现,form2里调用委托刷新form1数据
      

  3.   

    思路不对
    怎么在form2里又show form1呢
    直接在form1里
    form2 fm2=new form2();
    fm2.ShowDialog();//form1不关闭,也不用重新show
    刷新dgv
      

  4.   

    这样只是在form1中弹出form2,要在子窗体form2中点击添加按钮将数据添加到数据库,并自动关闭,自动刷新form1中的datagridview列表
      

  5.   


     能根据我写的代码,将你所说的大体一i写吗,我水平确实达不到,多谢了        private void btnAdd_Click(object sender, EventArgs e)
            {
                Form4 frm = new Form4();
                frm.callbackaddrow += AddRow;
                frm.Show();
            }        private void AddRow(string s1, string s2)
            {
                //根据新添加的值,在此处添加到DataGridView
            }
    public Form4()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                if(InsertSQL())
                {
                    callbackaddrow("新增行第一列值", "新增行第二列值");
                }
            }        //数据库操作
            private bool InsertSQL()
            {
                // ****
                return true;
            }
      

  6.   

    我不知道你是怎样将数据绑定到 datagridview 的。不知道这样可以不?在form1中,
    定义共有泛型,用于保存从数据库查询到结果的集合:
    public BindingList<T_SHIIRESAKIMASTER > lst  = new  BindingList<T_SHIIRESAKIMASTER >();绑定到 datagridview
         datagridview.DataSource = lst  ;  
    form2 时,
    你只需在insert提交到数据库后,加入:
    T_SHIIRESAKIMASTER tbrd = new T_SHIIRESAKIMASTER();
    tbrd.code2   = code ;
    ......
    form1.lst.Insert(0, tbrd);datagridview 内容会自动刷新了。    public class T_SHIIRESAKIMASTER
        {
            private string _code2 ;
            .....
            .....
            .....         
            ///<summary>
            /// 构造函数
            ///</summary>
            public T_SHIIRESAKIMASTER()
            {
            }
            ///<summary>
            ///
            ///</summary>
            public T_SHIIRESAKIMASTER
            (
               string code2 ,
            .....
            .....
            .....                    
            )
            {
                this._code2 = code2 ;
            .....
            .....
            .....         
            }        #region 公共属性
            
            public string code2
            {
                get
                {
                    return _code2;
                }
                set
                {
                    _code2= value;
                }
            }
            .....
            .....
            .....                    
        }
      

  7.   

    form1中:
    dataGridView1的 modifiers设为public 
     private void button1_Click(object sender, EventArgs e)
            {
                Form2 f2 = new Form2();
                f2.ShowDialog(this);  
            }
    ]form2中: private void button1_Click(object sender, EventArgs e)
            {
                Form1 f1 = (Form1)this.Owner;
                f1.textBox1.Text = "aaaa";
                 f1.dataGridView1.DataSource = ds.Tables[0].DefaultView ;
                this.Close();
            }
      

  8.   

    我没有绑定数据源datasource,更新按钮是这样写的
     private void btnrefresh_Click(object sender, EventArgs e)
            {
                Form2 f = new Form2();
                f.ShowDialog();
               
                //Console.WriteLine(dataGridView1.CurrentCell.ColumnIndex);
                //textSHIIRESAKICODE.Text =""            Update(textSHIIRESAKICODE1.Text, txtShiiresakiMei1.Text, System.Net.Dns.GetHostName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            }
    datasource那里该怎样改?谢谢了,我代码写的这么不好,辛苦您了
      

  9.   

     在你更新数据库后:    Update(textSHIIRESAKICODE1.Text, txtShiiresakiMei1.Text, System.Net.Dns.GetHostName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
    再通过查询,              try
                {
                    SqlConnection con = new SqlConnection("server =.;database=db_sql;uid=sa;pwd=123");
                    DataSet ds = new DataSet();
                    SqlDataAdapter adap = new SqlDataAdapter("select * from student", con);
                    adap.Fill(ds);
                    f1.dataGridView1.DataSource = ds.Tables[0].DefaultView;             }
                  catch 
                  {
                     
                  }
      

  10.   

    这个问题之前刚见人问过,建议先学习一下窗体间传值,再实现这个轻而易举,这里有一个类似的问题http://www.hellocsharp.com/ask/14.aspx
      

  11.   

    看来lz也是刚学编程。和我当年一样为了这么个问题,纠结了好久啊。那会还没有csdn呢。楼上的都是解决办法。
    如果你在form1中打开了form2,并且使用了ShowDialog()方法的话,
    那么在showdialog()后面就可以加入刷新grideview的代码了。如果不是以上办法,那么使用委托就可以了,在form2实例化以后,传入一个委托的变量并且绑定方法。
    在form2关闭时,调用委托的方法,在form1中刷新数据完成后,才会关闭form2.
      

  12.   

    那会还没有csdn呢。《============准确的说是我没听说过csdn。
      

  13.   


    呵呵 免得 被喷是不一个是我喜欢说话严谨一些,另外就是确实遇到过好几个喷子。
    前段时间有几天回帖勤快了点,有人喷:到处都能遇见你,然后就。。,此处省略若干字。确实没有C#,使用delphi起家的。
      

  14.   

    我也是先研究的delphi,不过那时还没入门,只会用别人现成的代码改改
    而那个别人,也是个臭手,代码写的又臭又长,复制粘贴改来改去
    而且经常出现不明所以的错误,删了重新来就又好使,简直崩溃了
    现在那个破程序也还在用,但是阶段性的就会出现某个窗体再也不好使了的情况
    正准备改造的时候全部推翻重来呢.
      

  15.   

    http://pan.baidu.com/s/1ntJUZgd我写了个 例子  你到 百度网盘下载一下把
      

  16.   

    结贴:我确实是新手
    先谢谢大家了~ 为造福后人,总结一下
    我的解决方法如下,可能比较低级,但新手易理解
     在form2确认添加按钮下: DialogResult = DialogResult.OK;
    在 form1 添加调至form2按钮下:if (f2.ShowDialog() == DialogResult.OK)

    检索一遍
    }
    这样就OK了