0

私が作成したサンプルコードがあります。ただし、実行すると範囲外エラーが発生し、理由が見つからないようです。

List<int> list1 = new List<int>() { 1, 2, 3, 4 };
List<string> list2 = new List<string>() { "a", "b", "c", "d", "e" };
dataGridView1.AllowUserToAddRows = true;
dataGridView1.AutoGenerateColumns = false;
int myRow = -1;
int myCell = -1;
foreach (var i in list1)
    {
     myRow = myRow+1;
     foreach (var d in list2)
     {
          myCell = myCell+1;

          dataGridView1.Rows[myRow].Cells[myCell].Value = i + " and " + d; 
     }
}

助けていただければ幸いです。ありがとう!

4

4 に答える 4

3

2 番目の foreach の後にmyCell背中を設定する必要があります。-1

そこにない行を選択することはできないため、foreach にも行を追加します。

現在も上昇を続けている

int myRow = -1;
int myCell = -1;
foreach (var i in list1)
{
 myRow = myRow+1;
//add the row here
 foreach (var d in list2)
 {
      myCell = myCell+1;
      //add the cell here

      dataGridView1.Rows[myRow].Cells[myCell].Value = i + " and " + d; 
 }
myCell = -1;
}

さらに良いのは、最初に設定myRowmyCell0ループの最後にそれらを増やすことです。

すなわち

int myRow = 0;
foreach(var i in list1) {
//DO YOUR STUFF
myRow++;
}
于 2013-07-18T11:08:44.283 に答える
1

これがあなたのための解決策です。これもテスト済みです。

List<int> list1 = new List<int>() { 1, 2, 3, 4 };
            List<string> list2 = new List<string>() { "a", "b", "c", "d", "e" };
            dataGridView1.AllowUserToAddRows = true;
            dataGridView1.AutoGenerateColumns = false;
            int myRow = -1;
            int myCell = -1;
            foreach (var i in list1)
            {
                myRow = myRow + 1;
                foreach (var d in list2)
                {
                    myCell = myCell + 1;
                    if(dataGridView1.Rows.Count==1)
                        dataGridView1.Rows.Add(list1.Count);
                    dataGridView1.Rows[myRow].Cells[myCell].Value = i + "and" + d;
                }
                myCell = -1;
            }

回答としてマークすることを忘れないでください

注: ここでは最初の行がヘッダーになります。

于 2013-07-18T11:56:07.397 に答える