Partager via


DataGridViewRowCollection.AddRange(DataGridViewRow[]) Méthode

Définition

Ajoute les objets spécifiés DataGridViewRow à la collection.

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

Paramètres

dataGridViewRows
DataGridViewRow[]

Tableau d’objets DataGridViewRow à ajouter au DataGridViewRowCollection.

Exceptions

dataGridViewRows a la valeur null.

dataGridViewRows contient une seule ligne et la ligne qu’elle contient contient plus de cellules qu’il y a des colonnes dans le contrôle.

Le contrôle associé DataGridView effectue l’une des actions suivantes qui empêchent temporairement l’ajout de nouvelles lignes :

  • Sélection de toutes les cellules du contrôle.

  • Effacement de la sélection.

- ou -

Cette méthode est appelée à partir d’un gestionnaire pour l’un des événements suivants DataGridView :

- ou -

La DataSource propriété de l’objet DataGridView n’est pas null.

- ou -

Au moins une entrée dans le dataGridViewRows tableau est null.

- ou -

Il DataGridView n’y a pas de colonnes.

- ou -

Au moins une ligne du dataGridViewRows tableau a une DataGridView valeur de propriété qui n’est pas null.

- ou -

Au moins une ligne du dataGridViewRows tableau a une Selected valeur de truepropriété .

- ou -

Deux lignes ou plus du dataGridViewRows tableau sont identiques.

- ou -

Au moins une ligne du dataGridViewRows tableau contient une ou plusieurs cellules d’un type incompatible avec le type de la colonne correspondante dans le contrôle.

- ou -

Au moins une ligne du dataGridViewRows tableau contient plus de cellules qu’il y a des colonnes dans le contrôle.

- ou -

Cette opération ajouterait des lignes figées après les lignes non supprimées.

Exemples

L’exemple de code suivant montre comment utiliser la AddRange méthode lorsque la ligne des nouveaux enregistrements est sélectionnée pour contourner le bogue indiqué dans la section Remarques.

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

Remarques

La AddRange méthode ajoute des lignes partagées au DataGridViewRowCollection, si possible. Sinon, les nouvelles lignes ne sont pas partagés. Pour plus d’informations, consultez Les meilleures pratiques pour la mise à l’échelle du contrôle DataGridView Windows Forms.

Les lignes du contrôle ne sont pas triées automatiquement lorsque de nouvelles lignes sont ajoutées. Pour trier les nouvelles lignes dans leur position correcte, appelez la DataGridView.Sort méthode dans un gestionnaire d’événements DataGridView.RowsAdded . Vous pouvez également appeler la DataGridView.Sort méthode dans un gestionnaire d’événements CellValueChanged pour trier les lignes lorsque l’utilisateur modifie une cellule.

Important

En raison d’un bogue, la AddRange méthode empêche votre application de répondre si la propriété est true et que la AllowUserToAddRows ligne des nouveaux enregistrements est sélectionnée. Pour contourner ce bogue, vous devez annuler la sélection de la ligne avant d’appeler cette méthode, puis réélectionner la ligne. Pour plus d’informations, consultez l’exemple de code de cette rubrique.

S’applique à

Voir aussi