想问一下各位大大...
我今天有两个Form...
当我在第一个form1按下新增时跑到form2...
可是我今天要在form2做连续新增的动作...
想问一下要怎么样我才能...当我新增一笔时就更新Form1的画面...
也就是Form1马上就会有我新增的资料... 
PS:我用的是VS2003...WinForm...

解决方案 »

  1.   

    问题好像有点不清楚
    你的问题是不是这样的:
    form1是显示记录列表的窗体,form2是新增记录的窗体
    在form1点"新增"->焦点到form2->在form2中增加很多条记录->在form1中能实时看到新增的结果?
      

  2.   

    可以加timer控件来更新你想要的控件的值。
    也可以重新LOAD你的FORM1,不过LOADFORM1这种方法要求数据量得小啊。
      

  3.   

    建议将form2作为模式对话框显示,form2可以将所以新增的记录内容缓存到一个数组或list里,然后关闭时返回这个列表,form1就可以把这个列表加进去了. 或者简单一点你在form2关闭时再在form1里重新加载一次全部数据。
    再或者你不将form2作为模式对话框显示并且想实时反映记录的增加的话也可以在form1里写一个public的添加记录方法,然后在form2里增加记录时直接调用form1里这个方法。
      

  4.   

    能把form1传到form2更新么直接在form2的代码中直接修改form1的值?
      

  5.   

    比较标准的做法应该是从Form2向Form1发送一个新增事件。事件的参数里面包括新增的事件。
      

  6.   

    可以在RORM1里定义方法,调用这个方法增加信息(把相应的参数传入)
      

  7.   

    简单的一种:
    在Form1中定一个public Form frm2 = null;变量,当frm2中Form1 frm1 = new Form1();frm1.frm2 = this;frm1.show();这样就可以在form1中控制Form2
      

  8.   

    思路:1)Form2中取到Form1的对象,一般通过Form2的成员字段构造函数;2)Form1的更新方法为public
      

  9.   

    这样做:
    在Form2里面定义委托并且声明事件Form2:        public delegate void RefreshDlg(参数);//参数你自己定,需要在Form1中用什么这里就写什么样的参数        public event RefreshDlg refreshDlg;
    在Form1中调用Form2的时候,这样写
    Form1:
                Form2 f2 = new Form2();
                f2.refreshDlg += new Form2.RefreshDlg(f2_refreshDlg);Form1中调用的Form2的refreshDlg事件的响应方法:
    void f2_refreshDlg(参数)
            {
                //这里做你要进行的Form1的增加数据的操作
            }
      

  10.   

    以下一段代码 希望对你有帮助Form1
    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm2 = new Form2(this);
                frm2.Show();
            }
            //注意以下方法定义为共有的
            public string MyText 
            {
                get { return this.label1.Text; }
                set { this.label1.Text = value; }
            }        public void binding()
            {
                //绑定数据源
            }    }
    Form2 public partial class Form2 : Form
        {
            //有一个参数的构造方法
            //或者 private Form frm=new Form();
            //使用frm是 强制转换" (From1)frm "
            private Form1 frm=new Form1();
            
            public Form2(Form1 frm)
            {
                InitializeComponent();
                this.frm = frm;
            }
            private void button1_Click(object sender, EventArgs e)
            {
                this.frm.MyText = "AAAAAA";
                this.frm.binding();//使Form1重新绑定数据源
            }
        }
      

  11.   

    我想问一下…
    如果我在Form2做一个Form1 mf = new form1();
    这样不是新建一个Form吗??
    可是我原本的Form1并没有关闭…
    且我是希望在原本的form1上显示我Form2新增的资料…??
    好多方法…实在有点给它混乱耶!!
      

  12.   

    在Form2里定义一个Form1的变量,然后在Form1里打开Form2时将自己的引用赋给Form2里的变量,这样在Form2里就可以通过这个变量来调用Form1内的方法了,不需要new form1()
      

  13.   

    在创建Form2 的时候向构造函数传递Form1 的句柄,就可以直接操作了嘛
      

  14.   


    f2.refreshDlg += new Form2.RefreshDlg(f2_refreshDlg);
    會有錯誤耶...
    Form2.RefreshDlg denotes a 'field' where a 'class' was expected
    ??這是什麼意思呀??且為我什麼我在vs2003的Document找不到refreshDlg....
      

  15.   

    我最后的作法为:
    在Form1的DataSet设为internal....(因为我要更新的是DataSet)
    再要开启Form2的地方多加个Form2.owner = this....
    而Form2要去更新Form1的地写新建个Form1(Form1 mf = new Form1())
    而就可以在Form2直接更新From1的DataSet了(DataRow dr = mf.DataSet.table["XXX"].newRow();)
    以上是小妹的实做方法...
    希望可以帮到跟我一样的新手...