1

ページ読み込みイベントでdatagridviewに動的にデータを追加しています。しかし、インデックスが範囲外であるというエラーが発生します。(「負ではなく、datagridviewのcollection.parameter名のサイズよりも小さい必要があります。」)

コードは次のとおりです。

        dataGridView1.Rows.Add();

        dataGridView1.Rows[0].Cells[0].Value = "Basic";
        dataGridView1.Rows[0].Cells[1].Value = "Basic";
        dataGridView1.Rows[1].Cells[0].Value = "PDALLW";
        dataGridView1.Rows[1].Cells[1].Value = "Professional Development Allow";
        dataGridView1.Rows[2].Cells[0].Value = "BPAllw";
        dataGridView1.Rows[2].Cells[1].Value = "Business Promotion Allowance";
4

3 に答える 3

1

グリッドに行がありません。あなたはそれを束縛してはいけません、さもなければあなたはそれが持っている行を超えています。

  1. 行にアクセスする前に、必ずグリッドをバインドしてください。

  2. 存在しない行インデックスにアクセスしないように注意してください。

于 2012-08-09T13:11:26.220 に答える
1

1行だけ追加しているようです。したがって、行0にしかアクセスできません。3つの行を作成しない限り、のような呼び出しは失敗しますdataGridView1.Rows[1]dataGridView1.Rows[2]

説明:

dataGridView1.Rows.Add();

これにより、DataGridViewに行が追加されます。したがって、インデックス0の行が1つあります(行インデックスは0から始まります)。行ったように、行0の値を設定できます。

dataGridView1.Rows[0].Cells[0].Value = "Basic";

しかし、次に、インデックス1(2番目の行)の行に値を設定してみます。

dataGridView1.Rows[1].Cells[0].Value = "PDALLW";

追加した行は1つだけ(1回呼び出される)なので、これは失敗しますRows.Add。3行が必要な場合はdataGridView1.Rows.Add();、セル値を設定する前に3回呼び出します。

于 2012-08-09T13:11:26.290 に答える
1

Add(3)の代わりに呼び出しますAdd()。これを拡張して、いつでも必要な数の行を追加することもできます。MSDNリンク

于 2012-08-09T13:29:06.520 に答える