DataGridViewRowCollection.AddRange メソッド
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

Dim instance As DataGridViewRowCollection Dim dataGridViewRows As DataGridViewRow() instance.AddRange(dataGridViewRows)

例外の種類 | 条件 |
---|---|
ArgumentNullException | dataGridViewRows が null 参照 (Visual Basic では Nothing) です。 |
ArgumentException | dataGridViewRows が 1 つだけ行を格納し、格納されている行にコントロールの列数を超える数のセルがあります。 |
InvalidOperationException | 関連付けられた DataGridView コントロールが次のいずれかのアクションを実行しているため、一時的に新しい行が追加できない状態にあります。 または このメソッドが、次のいずれかに該当する DataGridView イベントのハンドラから呼び出されています。
または DataGridView の DataSource プロパティが null 参照 (Visual Basic では Nothing) ではありません。 または dataGridViewRows 配列内の最低 1 つのエントリが null 参照 (Visual Basic では Nothing) です。 または DataGridView に列がありません。 または dataGridViewRows 配列の最低 1 つの行の DataGridView プロパティに null 参照 (Visual Basic では Nothing) 以外の値が設定されています。 または dataGridViewRows 配列の最低 1 つの行の Selected プロパティ値が true に設定されています。 または dataGridViewRows 配列の 2 つ以上の行が同じです。 または dataGridViewRows 配列の最低 1 つの行に、コントロール内の対応する列の型と互換性のない型のセルが 1 つ以上含まれています。 または dataGridViewRows 配列の最低 1 つの行に、コントロールの列数を超える数のセルがあります。 または |

AddRange メソッドは、可能な場合は、DataGridViewRowCollection に共有行を追加します。共有行を追加できない場合、新しい行は非共有となります。詳細については、「Windows フォーム DataGridView コントロールを拡張するための推奨される手順」を参照してください。
新しい行の追加時にコントロール内の行が自動的に並べ替えられることはありません。新しい行を並べ替えた上で正しい位置に挿入するには、DataGridView.RowsAdded イベント ハンドラで System.Windows.Forms.DataGridView.Sort メソッドを呼び出します。また、CellValueChanged イベント ハンドラで System.Windows.Forms.DataGridView.Sort メソッドを呼び出すことにより、セルがユーザーによって変更されたときに行を並べ替えることもできます。
![]() |
---|
AllowUserToAddRows プロパティが true のときに新しいレコードの行を選択した場合、AddRange メソッドのバグが原因で、アプリケーションが応答停止になります。このバグを回避するには、このメソッドを呼び出す前に行の選択をキャンセルし、メソッドを呼び出した後で行を再選択する必要があります。詳細については、このトピックのコード例を参照してください。 |

新しいレコードを選択したときに AddRange メソッドを使用して、「解説」セクションに記載されているバグを回避する方法を次のコード例に示します。
' Workaround for bug that prevents DataGridViewRowCollection.AddRange ' from working when the row for new records is selected. Private Sub AddRows(ByVal ParamArray rows As DataGridViewRow()) InsertRows(dataGridView1.RowCount - 1, rows) End Sub ' Workaround for bug that prevents DataGridViewRowCollection.InsertRange ' from working when any rows before the insertion index are selected. Private Sub InsertRows(ByVal index As Integer, _ ByVal ParamArray rows As DataGridViewRow()) Dim selectedIndexes As New System.Collections.Generic.List(Of Integer) For Each row As DataGridViewRow In dataGridView1.SelectedRows If row.Index >= index Then selectedIndexes.Add(row.Index) row.Selected = False End If Next row dataGridView1.Rows.InsertRange(index, rows) For Each selectedIndex As Integer In selectedIndexes dataGridView1.Rows(selectedIndex).Selected = True Next selectedIndex End Sub
// Workaround for bug that prevents DataGridViewRowCollection.AddRange // from working when the row for new records is selected. private void AddRows(params DataGridViewRow[] rows) { InsertRows(dataGridView1.RowCount - 1, rows); } // Workaround for bug that prevents DataGridViewRowCollection.InsertRange // from working when any rows before the insertion index are selected. private void InsertRows(int index, params DataGridViewRow[] rows) { System.Collections.Generic.List<int> selectedIndexes = new System.Collections.Generic.List<int>(); foreach (DataGridViewRow row in dataGridView1.SelectedRows) { if (row.Index >= index) { selectedIndexes.Add(row.Index); row.Selected = false; } } dataGridView1.Rows.InsertRange(index, rows); foreach (int selectedIndex in selectedIndexes) { dataGridView1.Rows[selectedIndex].Selected = true; } }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- DataGridViewRowCollection.AddRange メソッドのページへのリンク