DataGridViewRowCollection.AddRange(DataGridViewRow[]) Método

Definición

Agrega a la colección los objetos DataGridViewRow especificados.

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

Parámetros

dataGridViewRows
DataGridViewRow[]

Matriz de objetos DataGridViewRow que se agregará a DataGridViewRowCollection.

Excepciones

dataGridViewRows es null.

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

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 agregaría filas inmovilizada después de las filas inmovilizadas.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar el AddRange método cuando se selecciona la fila de nuevos registros para solucionar el error indicado en la sección Comentarios.

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

Comentarios

El AddRange método agrega filas compartidas a DataGridViewRowCollection, si es posible. De lo contrario, las nuevas filas no están compartidas. 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 AddRange aplicación deje de responder si la AllowUserToAddRows propiedad es true y se selecciona la fila de nuevos registros. Para solucionar este error, debe cancelar la selección de la fila antes de llamar a este método y, a continuación, volver a seleccionar la fila. Para obtener más información, vea el ejemplo de código de este tema.

Se aplica a

Consulte también