2013-05-07 68 views
-1

我已经写,其提取特定行从文本文件的编码,分割线和数据插入到一个gridview。编码如下。插入一个阵列到datagidview

不幸的是,当我执行这个程序,我收到称为“索引超出范围必须大于集合的大小非负少参数名称。:指数”的错误味精。请帮我鉴定一下我的值编码

string line;   
System.IO.StreamReader file = new System.IO.StreamReader("test.txt"); 

     while ((line = file.ReadLine()) != null) 
     { 
      if (line.Contains("DISKXFER")) 
       { 
       string dataLine=line.ToString(); 
        string[] split = dataLine.Split(','); 
        for (int i = 0; i < split.Length; i++) 
        { 
         for (int j = 1; j < dataLine.Length; j++) 
         { 
          dataGridView1.Rows[j].Cells[i].Value = split[i]; 
         } 
        } 
       } 
     } 
+0

那么错误信息是很清楚的:指数('j'或你的情况下的'i')分别比'Rows'或'Cells'或'split'中的项目多。顺便说一句,三个嵌套循环肯定不是一个好主意。 – Leri 2013-05-07 10:17:38

+0

为什么不使用addrange方法? – Obama 2013-05-07 10:20:51

+0

我会说这是指数J.请问您DataGridView中含有足够的行,你需要调用一个添加行方法或类似的东西? – Purplegoldfish 2013-05-07 10:30:36

回答

1

出了错您DataGridView不包含持有信息所需的行数。而不是设置dataGridView1.Rows[j].Cells[i]一些价值的,你需要添加一行在dataLine每个条目。

而不是你的嵌套循环,你可以这样做:

string dataLine=line.ToString(); 
string[] split = dataLine.Split(','); 

dataGridView1.Rows.Add(split); 
+0

@Dittmar是的,它的工作。非常感谢 – 2013-05-07 11:02:00

+0

太棒了! “谢谢,它工作”的等价物是将答案标记为已接受:-) – 2013-05-07 11:06:51