C#Datagridview最后一个索引超出范围

时间:2012-09-24 06:30:53

标签: c# datagridview cells

嗨,大家好,我在这里=)

我需要你在最小的麻烦案件中的帮助,为我节省时间=)

问题在于,我想拥有datagridview Cells Values和 将值保存到数组中。

到目前为止,它工作正常,但它只读取第一行单元格和之后 这个过程它只是告诉索引超出范围,但我不明白为什么。

foreach (DataGridViewRow row in dataGridView1.Rows)     //wo soll er sich aufhalten -> zeilen
                {

                    **if (row.Cells[i].Value == null)**
                    {
                        MessageBox.Show("This row is empty");
                        break;
                    }
                        if (row.Cells[i].Value != null)
                        {
                            UnsortArray[i] = row.Cells[i].Value.ToString();
                            MessageBox.Show(UnsortArray[i]);
                            ++i;
                        }

                }

4 个答案:

答案 0 :(得分:2)

    foreach (DataGridViewRow row in dataGridView1.Rows)   
                    {
                      for (int i=0; i<= dataGridView1.Columns.Count; i++)
{
                        **if (row.Cells[i].Value == null)**
                        {
                            MessageBox.Show("This row is empty");

                        }
                            if (row.Cells[i].Value != null)
                            {
                                UnsortArray[i] = row.Cells[i].Value.ToString();
                                MessageBox.Show(UnsortArray[i]);

                            }

    }



                    }

另外,我不明白你为什么要在循环中做messageBox.show。它应该在循环之外。

答案 1 :(得分:2)

foreach (DataGridViewRow row in dataGridView1.Rows)     //wo soll er sich aufhalten -> zeilen
                {

                    if (row.Cells[i].Value == null)
                        MessageBox.Show("This row is empty")
                    else
                        {
                            UnsortArray[i] = row.Cells[i].Value.ToString();
                            MessageBox.Show(UnsortArray[i]);
                   //    ++i;  dont need to increment if you want to read only specific column
                        }
                }

答案 2 :(得分:1)

尝试以下代码&gt;&gt;

for(int i=0;i<dataGridView1.Rows.Count;i++)
                {

                    if (dataGridView1.Rows[i].cells[i].Value==null)**
                    {
                        MessageBox.Show("This row is empty");
                        break;
                    }

                    else
                        {
                          UnsortArray[i] = dataGridView1.Rows[i].cells[i].Value.ToString();
                            MessageBox.Show(UnsortArray[i]);

                        }





                }

答案 3 :(得分:1)

UnSortArray使用不同的Index变量(假设j)。 i是要在UnSortArray

中存储的值的单元格索引

<强> CODE

            foreach (DataGridViewRow row in dataGridView1.Rows)     
            {

                if (row.Cells[i].Value == null)
                {
                    MessageBox.Show("This row is empty")
                }
                else
                    {
                        UnsortArray[j] = row.Cells[i].Value.ToString();
                        MessageBox.Show(UnsortArray[j]);
                        ++j;
                    }
            }