DataGridViewRowCollection.AddRange(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í.
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.