1

大家好,我是新来的=)

在最小的麻烦情况下,我需要您的帮助,为我节省时间 =)

问题在于,我想要 datagridview 单元格值并将值保存到数组中。

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

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

4 回答 4

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 。它应该在循环之外。

于 2012-09-24T06:36:51.987 回答
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
                        }
                }
于 2012-09-24T06:37:17.533 回答
1

试试下面的代码>>

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]);

                        }





                }
于 2012-09-24T06:43:00.793 回答
1

使用不同的索引变量UnSortArray(比如说 j)。i是要存储的值的单元格的索引UnSortArray

代码

            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;
                    }
            }
于 2012-09-24T06:55:21.027 回答