有两个窗体,一个是Form1,一个是Form2在Form1中有一个dataGrid1,公有的,public  System.Windows.Forms.DataGrid dataGrid1;我想在Form2中用dataGrid1,怎么写??Form f1=new Form1();
f1.dataGrid1这个不出啊请教高手

解决方案 »

  1.   

    一般UI控件是不能直接在另一個窗體中引用的,但是可以用delegate,或者invoke來調用,
    delegate請參見
    http://blog.csdn.net/tjvictor/archive/2006/06/23/824617.aspx
    invoke可以看csdn
      

  2.   

    form2是form1打开的???如果是的话
    你可以把form1传到form2里面去
    可以用属性或者通过构造函数或者你还可以在form2中发一个事件
    然后再form1里面订阅这个事件
      

  3.   

    form2是form1打开的???如果是的话
    你可以把form1传到form2里面去
    可以用属性或者通过构造函数或者你还可以在form2中发一个事件
    然后再form1里面订阅这个事件
    ==============================================给个代码看看------------------------------------
    还有我已经设成公有的了,但就是不出啊
      

  4.   

    Form f1=new Form1();改成
    Form1 f1 = new Form1();
      

  5.   

    但是值不对啊Form1 d=new Form1();
    int i=d.dataGrid1.CurrentRowIndex;

    这个值总是-1啊,不对啊
      

  6.   

    你没有选中任何行,CurrentRowIndex当然是-1了
      

  7.   

    当然是选了呀就是传不过来,我好郁闷我前面在Form1中:public int a;在load事件中a=100;在Form2中:Form1 f1=new Form1();   int i;  i=f1.a;  MessageBox.Show(null,i.tostring(),i,tostring());    显示的是0啊,在Form1中我MessageBox.Show(null,a.tostring(),a.tostring())是100是怎么回事呢,这个值就是传不过去高手指教
      

  8.   

    你Form1不show(),load事件没有执行,a的值就是0
      

  9.   

    一样不行啊,我把a1=100放在一个单击事件上,这样a1就是100了吧,但值还是传不过去啊,static的是可以,但我的目的不是传变量的值 啊,我是要用Form1的dataGrid1的成员的值啊,不信你试试看,我的就是不行啊
      

  10.   

    你把 Form1 的 dataGrid1 声明成 static 的
      

  11.   

    最简单的方试把 Form1 的 dataGrid1 声明成 static ,以后直接在Form2中执行
     int i=Form1.dataGrid1.CurrentRowIndex;
      

  12.   

    ???
    你为什么不直接在form2中设一个datagrid2,然后再将datagrid2绑定到form1中那个datagrid的数据源呢?