我在Form1_DragDrop中建了一个datatable dt1,填充了数据,但是在button1的Click事件中string id=dt1.Rows[0][0].toToString();出错:错误 1 当前上下文中不存在名称“dt1”

解决方案 »

  1.   

    我在Form1_DragDrop中建了一个datatable dt1
    这个DT只是个临时变量,你要在其他方法中看到它要把它提升为类的字段。
    public Form1
    {
      Datatable dt1;
      protected void Btn_Click(...)
      {
        dt1.... 
      }
    }
      

  2.   


    dataTable 定义成全局变量,但是建议少用全局变量
      

  3.   

      public partial class Form1 : Form
        {
            ......
              DataTable dt1;
               private void Form1_DragDrop(object sender, DragEventArgs e)
            {
                            
             DataTable dt1 = new DataTable();
                        
                DataColumn dc1 = new DataColumn("id", System.Type.GetType("System.String"));
    .............
                 dt1.Columns.Add(dc1);
                 ..........
    }
            private void button1_Click(object sender, EventArgs e)
            {
                     ......
                     string id=dt1.Rows[0][0].toToString();  //这里就出错了:未将对象引用设置到对象的实例
                     ........   
     }  }      昏倒
      

  4.   

    DataTable dt1;
    这个是成员变量  private void Form1_DragDrop(object sender, DragEventArgs e)
      {
       
      DataTable dt1 = new DataTable();
    这个是临时变量。你把 DataTable dt1 = new DataTable();换成 dt1 = new DataTable();就是使用的成员变量了
      

  5.   

    呵呵,局部变量覆盖类成员变量了。看看编译的warning,应该有警告的。
      

  6.   

    这句DataTable dt1 = new DataTable();
    改成
    dt1 = new DataTable();
      

  7.   


    声明全局之后,你又把他给new了一下,去掉Form1_DragDrop里面的DataTable,直接dt1.Columns.Add(dc1);