Freigeben über


DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Methode

Definition

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

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

Parameter

rowIndex
Int32

Die Position, an der die Zeilen eingefügt werden sollen.

dataGridViewRows
DataGridViewRow[]

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

Ausnahmen

dataGridViewRows ist null.

rowIndex ist kleiner als 0 (null) oder größer als die Anzahl von Zeilen in der Auflistung.

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 -

rowIndex entspricht der Anzahl der Zeilen in der Auflistung und AllowUserToAddRows ist true.

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

Bei diesem Vorgang würden fixierte Zeilen nach nicht fixierten Zeilen oder nicht fixierte Zeilen vor fixierten Zeilen eingefügt.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Sie mithilfe der InsertRange -Methode Zeilen vor ausgewählten Zeilen einfügen, um den im Abschnitt Hinweise angegebenen Fehler zu umgehen.

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

Hinweise

Die InsertRange -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 reagiert Ihre InsertRange Anwendung nicht mehr, wenn Zeilen mit einem Index größer als rowIndex ausgewählt sind. Um diesen Fehler zu umgehen, müssen Sie die Auswahl dieser Zeilen vor dem Aufrufen dieser Methode abbrechen und die Zeilen anschließend erneut auswählen. Weitere Informationen finden Sie im Codebeispiel in diesem Thema.

Gilt für:

Weitere Informationen