DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Method

定義

コレクション内の指定した位置に DataGridViewRow オブジェクトを挿入します。Inserts the DataGridViewRow objects into the collection at the specified position.

public:
 virtual void InsertRange(int rowIndex, ... cli::array <System::Windows::Forms::DataGridViewRow ^> ^ dataGridViewRows);
public virtual void InsertRange (int rowIndex, params System.Windows.Forms.DataGridViewRow[] dataGridViewRows);
abstract member InsertRange : int * System.Windows.Forms.DataGridViewRow[] -> unit
override this.InsertRange : int * System.Windows.Forms.DataGridViewRow[] -> unit
Public Overridable Sub InsertRange (rowIndex As Integer, ParamArray dataGridViewRows As DataGridViewRow())

パラメーター

rowIndex
Int32 Int32 Int32 Int32

行を挿入する位置。The position at which to insert the rows.

dataGridViewRows
DataGridViewRow[]

DataGridViewRowCollection に追加する DataGridViewRow オブジェクトの配列。An array of DataGridViewRow objects to add to the DataGridViewRowCollection.

例外

dataGridViewRowsnull です。dataGridViewRows is null.

rowIndex がゼロ未満か、コレクション内の行数を超えています。rowIndex is less than zero or greater than the number of rows in the collection.

dataGridViewRows に含まれるのは 1 行のみであり、そこに含まれる行に、コントロール内の列数よりも多くのセルが含まれています。dataGridViewRows contains only one row, and the row it contains has more cells than there are columns in the control.

関連付けられている DataGridView コントロールによって、新しい行の追加を一時的に妨げる次の操作のいずれかが実行されています。The associated DataGridView control is performing one of the following actions that temporarily prevents new rows from being added: - コントロール内のすべてのセルを選択している。- Selecting all cells in the control.

- 選択範囲をクリアしている。- Clearing the selection.

- または --or- このメソッドは、次のいずれかの DataGridView イベントのハンドラーから呼び出されています。This method is being called from a handler for one of the following DataGridView events:

- または --or- rowIndex がコレクション内の行数と等しく、また AllowUserToAddRowstrue です。rowIndex is equal to the number of rows in the collection and AllowUserToAddRows is true.

- または --or- DataGridViewDataSource プロパティが null ではありません。The DataSource property of the DataGridView is not null.

- または --or- dataGridViewRows 配列の中の少なくとも 1 つのエントリが null です。At least one entry in the dataGridViewRows array is null.

- または --or- DataGridView に列がありません。The DataGridView has no columns.

- または --or- dataGridViewRows 配列の中の少なくとも 1 つの行の DataGridView プロパティ値が null ではありません。At least one row in the dataGridViewRows array has a DataGridView property value that is not null.

- または --or- dataGridViewRows 配列の中の少なくとも 1 つの行の Selected プロパティ値が true です。At least one row in the dataGridViewRows array has a Selected property value of true.

- または --or- dataGridViewRows 配列の中に 2 つ以上の同一の行があります。Two or more rows in the dataGridViewRows array are identical.

- または --or- dataGridViewRows 配列の中の少なくとも 1 つの行に、コントロール内の対応する列の型と互換性のない型の 1 つ以上のセルが含まれています。At least one row in the dataGridViewRows array contains one or more cells of a type that is incompatible with the type of the corresponding column in the control.

- または --or- dataGridViewRows 配列の中の少なくとも 1 つの行に、コントロール内の列数よりも多くのセルが含まれています。At least one row in the dataGridViewRows array contains more cells than there are columns in the control.

- または --or- この操作を行うと、固定されていない行の後に固定されている行が挿入されるか、または固定されている行の前に固定されていない行が挿入されます。This operation would insert frozen rows after unfrozen rows or unfrozen rows before frozen rows.

次のコード例は、使用する方法を示します、InsertRangeバグを回避するために選択した行の前に行を挿入するメソッドは、「解説」に示されています。The following code example demonstrates how to use the InsertRange method to insert rows before selected rows to work around the bug indicated in the Remarks section.

// 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;
    }
}
' 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

注釈

InsertRangeメソッドが共有行を追加、 DataGridViewRowCollection、可能な場合。The InsertRange method adds shared rows to the DataGridViewRowCollection, if possible. それ以外の場合、新しい行では、共有されていません。Otherwise, the new rows are unshared. 詳細については、次を参照してください。 Windows フォーム DataGridView コントロールを拡張するためのベスト プラクティスします。For more information, see Best Practices for Scaling the Windows Forms DataGridView Control.

新しい行が追加されたときに、コントロール内の行は自動的に並べ替えられません。Rows in the control are not automatically sorted when new rows are added. 正しい位置に新しい行を並べ替えを呼び出して、DataGridView.Sortメソッドで、DataGridView.RowsAddedイベント ハンドラー。To sort new rows into their correct position, call the DataGridView.Sort method in a DataGridView.RowsAdded event handler. 呼び出す場合も、DataGridView.Sortメソッドで、CellValueChangedユーザーがセルを変更すると、行の並べ替えにイベント ハンドラー。You might also want to call the DataGridView.Sort method in a CellValueChanged event handler to sort the rows when the user modifies a cell.

重要

バグに起因、InsertRangeメソッドと、アプリケーション停止、応答の場合、インデックスを持つ任意の行より大きいrowIndexが選択されています。Due to a bug, the InsertRange method will make your application stop responding if any rows with an index greater than rowIndex are selected. このバグを回避するには、このメソッドを呼び出す前にこれらの行の選択を解除し、行を後でもう一度選択する必要があります。To work around this bug, you must cancel the selection of these rows before calling this method, and reselect the rows afterward. 詳細については、このトピックのコード例を参照してください。For more information, see the code example in this topic.

適用対象

こちらもご覧ください