日期:2014-05-18  浏览次数:21190 次

C# winfrom索引超出数组界限问题???
//导入条目
  private void btnImport_Click(object sender, EventArgs e)
  {
  DataTable dt = new DataTable();
  dt.Columns.Add("编号", typeof(string)); //定义dataTable这里就做了一列你可以添加多列
  dt.Columns.Add("名称", typeof(string));
  dt.Columns.Add("类型描述", typeof(string));
  dt.Columns.Add("InfoParam", typeof(string));
  dt.Columns.Add("InfoSQL", typeof(string));
  dt.Columns.Add("护士站编号", typeof(string));
  FileStream stream = new FileStream(@".\info.txt", FileMode.Open, FileAccess.Read);
  using (StreamReader reader = new StreamReader(stream, Encoding.Default,false))
  {
  while (!reader.EndOfStream&&reader!=null)
  {
  //将每行数据,用逗号分割成3段
  string[] data = reader.ReadLine().Split(',');
  //新建一行,并将读出的数据分段,分别存入3个对应的列中
  DataRow dr = dt.NewRow();
  dr[0] = data[0];
  dr[1] = data[1];
  dr[3] = data[2];
  //将这行数据加入到datatable中
  dt.Rows.Add(dr);
  //MessageBox.Show(dt.Rows.Count+"");
  dgvInfoLibrary.DataSource = dt; //绑定
  }
   
  }
   
  }
从txt文件中读取数据导入到datagridview中,可以显示数据,但是索引出错

------解决方案--------------------
string[] data = reader.ReadLine().Split(',');注意这里,调试看看,是否data会得到3个元素的数组,如果得不到,后面对data的访问就可能越界
------解决方案--------------------
楼上正解
------解决方案--------------------
dr[3] = data[2]; ? dr[2] = data[2];
 
------解决方案--------------------
+1
探讨
dr[3] = data[2]; ? dr[2] = data[2];