DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.