1

こんにちはみんなimここで新しい=)

私の時間を節約するために、最小限のトラブルの場合にあなたの助けが必要です=)

問題はそれについてです、私は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 に答える