Freigeben über


DataGridViewRowCollection.AddRange(DataGridViewRow[]) Methode

Definition

Fügt der Auflistung die angegebenen DataGridViewRow-Objekte hinzu.

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

Parameter

dataGridViewRows
DataGridViewRow[]

Ein Array von DataGridViewRow-Objekten, die DataGridViewRowCollection hinzugefügt werden sollen.

Ausnahmen

dataGridViewRows ist null.

dataGridViewRows enthält nur eine Zeile, und die enthaltene Zeile verfügt über mehr Zellen, als Spalten im Steuerelement vorhanden sind.

Das zugeordnete DataGridView-Steuerelement führt eine der folgenden Aktionen aus, wodurch vorübergehend keine neuen Zeilen hinzugefügt werden können:

  • Auswählen aller Zellen im Steuerelement.

  • Die Auswahl wird gelöscht.

- oder -

Diese Methode wird von einem Handler für eines der folgenden DataGridView-Ereignisse aufgerufen:

- oder -

Die DataSource-Eigenschaft der DataGridView ist nicht null.

- oder -

Mindestens ein Eintrag im dataGridViewRows-Array ist null.

- oder -

Die DataGridView hat keine Spalten.

- oder -

Mindestens eine Zeile im dataGridViewRows-Array verfügt über einen DataGridView-Eigenschaftswert, der nicht null ist.

- oder -

Mindestens eine Zeile im dataGridViewRows-Array verfügt über einen Selected-Eigenschaftswert, der true ist.

- oder -

Mindestens zwei Zeilen im dataGridViewRows-Array sind identisch.

- oder -

Mindestens eine Zeile im dataGridViewRows-Array enthält mindestens eine Zelle eines Typs, der mit dem Typ der entsprechenden Spalte im Steuerelement nicht kompatibel ist.

- oder -

Mindestens eine Zeile im dataGridViewRows-Array enthält mehr Zellen als Spalten im Steuerelement vorhanden sind.

- oder -

Dieser Vorgang würde fixierte Zeilen hinter nicht fixierten Zeilen hinzufügen.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Sie die AddRange -Methode verwenden, wenn die Zeile für neue Datensätze ausgewählt ist, um den im Abschnitt Hinweise angegebenen Fehler zu umgehen.

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

Hinweise

Die AddRange -Methode fügt nach Möglichkeit freigegebene DataGridViewRowCollectionZeilen hinzu. Andernfalls werden die neuen Zeilen aufgehoben. Weitere Informationen finden Sie unter Empfohlene Vorgehensweisen für das Skalieren des DataGridView-Steuerelements in Windows Forms.

Zeilen im Steuerelement werden nicht automatisch sortiert, wenn neue Zeilen hinzugefügt werden. Um neue Zeilen an die richtige Position zu sortieren, rufen Sie die DataGridView.Sort -Methode in einem Ereignishandler auf DataGridView.RowsAdded . Sie können auch die DataGridView.Sort Methode in einem CellValueChanged Ereignishandler aufrufen, um die Zeilen zu sortieren, wenn der Benutzer eine Zelle ändert.

Wichtig

Aufgrund eines Fehlers führt die Methode dazu AddRange , dass Ihre Anwendung nicht mehr reagiert, wenn die AllowUserToAddRows Eigenschaft ist true und die Zeile für neue Datensätze ausgewählt ist. Um diesen Fehler zu umgehen, müssen Sie die Auswahl der Zeile abbrechen, bevor Sie diese Methode aufrufen, und dann die Zeile erneut auswählen. Weitere Informationen finden Sie im Codebeispiel in diesem Thema.

Gilt für:

Weitere Informationen