Compartir a través de


DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Método

Definición

Inserta los objetos DataGridViewRow en la colección en la posición especificada.

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())

Parámetros

rowIndex
Int32

Posición en la que se insertarán las filas.

dataGridViewRows
DataGridViewRow[]

Matriz de objetos DataGridViewRow para agregar en DataGridViewRowCollection.

Excepciones

dataGridViewRows es null.

rowIndex es menor que cero o mayor que el número de filas de la colección.

dataGridViewRows solo contiene una fila y la fila que contiene tiene más celdas que las columnas existentes en el control.

El control DataGridView asociado está realizando una de las siguientes acciones que impide que se agreguen nuevas filas temporalmente:

  • Seleccionar todas las celdas del control.

  • Borrar la selección.

O bien

Se llama a este método desde un controlador para uno de los siguientes eventos DataGridView:

O bien

rowIndex es igual al número de filas de la colección y AllowUserToAddRows es true.

O bien

La propiedad DataSource de DataGridView no es null.

O bien

Al menos una entrada de la matriz dataGridViewRows es null.

O bien

DataGridView no tiene columnas.

o bien

Al menos una fila de la matriz dataGridViewRows tiene un valor de propiedad DataGridView que no es null.

O bien

Al menos una fila de la matriz dataGridViewRows tiene un valor de propiedad Selected de true.

O bien

Dos o más filas de la matriz dataGridViewRows son idénticos.

O bien

Al menos una fila de la matriz dataGridViewRows contiene una o más celdas de un tipo que es incompatible con el tipo de la columna correspondiente del control.

O bien

Al menos una fila de la matriz dataGridViewRows contiene más celdas que las columnas existentes en el control.

O bien

Esta operación insertaría filas inmovilizadas después de las filas que no estén inmovilizadas o filas que no estén inmovilizadas antes de las filas inmovilizadas.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar el InsertRange método para insertar filas antes de las filas seleccionadas para evitar el error indicado en la sección Comentarios.

// 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

Comentarios

El InsertRange método agrega filas compartidas a DataGridViewRowCollection, si es posible. De lo contrario, las nuevas filas no se compartirán. Para obtener más información, consulte Procedimientos recomendados para ajustar la escala del control DataGridView en Windows Forms.

Las filas del control no se ordenan automáticamente cuando se agregan nuevas filas. Para ordenar nuevas filas en su posición correcta, llame al DataGridView.Sort método en un DataGridView.RowsAdded controlador de eventos. También puede llamar al DataGridView.Sort método en un CellValueChanged controlador de eventos para ordenar las filas cuando el usuario modifica una celda.

Importante

Debido a un error, el método hará que la InsertRange aplicación deje de responder si se seleccionan filas con un índice mayor que rowIndex . Para solucionar este error, debe cancelar la selección de estas filas antes de llamar a este método y volver a seleccionar las filas después. Para obtener más información, vea el ejemplo de código de este tema.

Se aplica a

Consulte también