【问题标题】:Using For loop Int in DataGridView.Rows[]在 DataGridView.Rows[] 中使用 For 循环 Int
【发布时间】:2014-09-01 19:09:00
【问题描述】:

在我的 WFA 项目 (C#) 中,我需要将所有 DataGridView 值读取到数组中。我想使用 for 循环。 例如,对于第一行,我尝试使用 i = 0 值并尝试将值读取到数组中。 喜欢;

string[] Array1 = new string[2];    
for (int i = 0; i < NumOfRow; i +=1)
  {
    string [0] = dgv1.Rows[i].Cells["Total1"].Value.ToString();
    string [1] = dgv1.Rows[i].Cells["Total2"].Value.ToString();
    string [2] = dgv1.Rows[i].Cells["Total3"].Value.ToString();
  }

我得到了错误,“i”没有价值。我正在尝试在打印操作中使用它。我也在 BeginPrint 事件中赋予价值。

【问题讨论】:

  • “我得到错误”又是什么错误?
  • 索引超出范围。必须是非负数且小于集合的大小。
  • 这个错误还不够清楚吗?请检查 NumofRows 是否比数据网格中的实际行数更大
  • 当然,够了。但是当我在行之间使用 MessageBox 时,我可以看到 i 值并且我可以读取真实值。但我不能使用 thme 作为行索引。
  • @user3054228 i 是否有值无关紧要,例如,如果 i = 10 并且您只有 5 行,它将抛出您得到的异常,因此在这种情况下要小心,请记住索引行从 0 开始,所以第一行是 dgv.Rows[0],最大值是 dgv.Rows[dgv.Rows.Count-1]

标签: c# .net for-loop


【解决方案1】:

你的代码是正确的,但似乎有一些错误,比如你没有为数组使用正确的口袋大小,第二个你在为数组赋值时错过了数组名称。

以下是为您提供帮助的示例。

string[] Array1 = new string[3];   

                for (int i = 0; i < dataGridView1.Rows.Count; i +=1)
                {
                    Array1 [0] = dataGridView1.Rows[i].Cells[0].Value.ToString();
                    Array1 [1] = dataGridView1.Rows[i].Cells[1].Value.ToString();
                    Array1 [2] = dataGridView1.Rows[i].Cells[2].Value.ToString();
                }

【讨论】:

    【解决方案2】:

    我想你想要更多这样的东西:

    List<string[]> allValues = new List<string[]>();
    foreach(var row in dvg1.Rows)
    {
        string[] arr = new string[3];  
        arr[0] = row.Cells["Total1"].Value.ToString();
        arr[1] = row.Cells["Total2"].Value.ToString();
        arr[2] = row.Cells["Total3"].Value.ToString();
    
        allValues.add(arr);
    }
    

    我不知道为什么我被否决了。除了您的编译器错误之外,我正在尝试解决您在循环中的每次迭代都覆盖自己的问题。

    【讨论】:

    • 感谢您的回复。我会试试这个。
    猜你喜欢
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多