我把一个dgv跟一个tempdt绑定起来了 然后点击dgv的某一个单元格 就把tempdt中该单元格所对应的列名给传递到另一个窗口父窗体form1里代码是这样的:
private void dataGridView2_CellEnter(object sender, DataGridViewCellEventArgs e)
        { 
           form2 frm = new form2(itemdt);//itemdt是我别的地方要用的datatable 也是传递过去的            if (e.ColumnIndex == 5 || e.ColumnIndex == 7 || e.ColumnIndex == 9 || e.ColumnIndex == 11 || e.ColumnIndex == 13)
            {                rowid = e.RowIndex;
                columnid = e.ColumnIndex;
                columnname = dataGridView2.Columns[e.ColumnIndex].DataPropertyName.ToString();//dataGridView2.SortedColumn.HeaderCell.Value.ToString();
                
                frm.ShowDialog();
               
            }
子窗体form2里:
             form1 frm=new form1();                tempdt.Rows[frm .rowid ][frm.columnname  ] = dataGridView1.CurrentRow.Cells[1].Value.ToString();
问题:
我在form1里面 用Messagebox.show了一下 columnname 是有值的
为什么在form2里 就是没有的呢 传过去都说我是空的

解决方案 »

  1.   

             form1 frm=new form1();                 tempdt.Rows[frm .rowid ][frm.columnname  ] = dataGridView1.CurrentRow.Cells[1].Value.ToString(); 应该错在你又new了一个  form1 frm=new form1(); 
      

  2.   

    form1 frm=new form1();
    你这是又实例了一个f1,而不是之前已经打开的
      

  3.   

     form2 frm = new form2(itemdt,这里加一个string[]参数);//itemdt是我别的地方要用的datatable 也是传递过去的string[]存着rowid,columnid,columnname这样都传过去,和你传itemdt是一个道理
      

  4.   

    public static int rowid = 0;
    public static int columnid = 0;
    public static int columnname = 0;用的时候直接就是form1.rowid
      

  5.   

    columnname传过去 还是空的。。
      

  6.   

    form1中:form2 frm = new form2(参数a)
    frm.show();form2中:构造函数中声明参数b并且与a类型相同,令定义一个全局变量,把参数a的质赋给它。
      

  7.   

    form1 frm=new form1(); 
    frm.columnid
    你不能这样调用你在form1里直接定义全局变量
    直接在form2里使用form1.columnid要不你就直接按我上边的第一种方法,直接传参数过去
      

  8.   

    不能用new..
    Form1里,打开Form2的时候:
    Form2 form2 = new Form2();
    form2.Owner = this;
    form2.Show();Form2里传值给Form1的时候:
    Form1 form1 = (Form1)this.Owner;
    form1.属性 = 值;