DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Methode

Definition

Fügt die DataGridViewRow Objekte an der angegebenen Position in die Auflistung ein.

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 dem DataGridViewRowCollectionObjekt hinzugefügt werden sollen.

Ausnahmen

dataGridViewRows ist null.

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

dataGridViewRows enthält nur eine Zeile, und die Darin enthaltene Zeile enthält mehr Zellen als Spalten im Steuerelement.

Das zugeordnete DataGridView Steuerelement führt eine der folgenden Aktionen aus, die vorübergehend verhindern, dass neue Zeilen hinzugefügt werden:

  • Markieren 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 ist gleich der Anzahl der Zeilen in der Auflistung und AllowUserToAddRows ist true.

-oder-

Die DataSource Eigenschaft der Eigenschaft DataGridView ist nicht null.

-oder-

Mindestens ein Eintrag im dataGridViewRows Array ist null.

-oder-

Die Spalte DataGridView enthält keine Spalten.

-oder-

Mindestens eine Zeile im dataGridViewRows Array weist einen DataGridView Eigenschaftswert auf, der nicht nullangegeben ist.

-oder-

Mindestens eine Zeile im dataGridViewRows Array weist einen Selected Eigenschaftswert von true.

-oder-

Zwei oder mehr Zeilen im dataGridViewRows Array sind identisch.

-oder-

Mindestens eine Zeile im dataGridViewRows Array enthält mindestens eine Zelle eines Typs, die 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.

-oder-

Bei diesem Vorgang würden fixierte Zeilen nach nicht gesperrten Zeilen oder nicht mehr gesperrten Zeilen vor fixierten Zeilen eingefügt.This operation would insert frozen rows after unfrozen rows or unfrozen rows.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie die InsertRange Methode zum Einfügen von Zeilen vor ausgewählten Zeilen verwendet wird, 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 dem , falls möglich, freigegebene Zeilen hinzu DataGridViewRowCollection. Andernfalls werden die neuen Zeilen nicht freigegeben. Weitere Informationen finden Sie unter Bewährte Methoden zum Skalieren des Windows Forms DataGridView-Steuerelements.

Zeilen im Steuerelement werden nicht automatisch sortiert, wenn neue Zeilen hinzugefügt werden. Rufen Sie die DataGridView.Sort Methode in einem DataGridView.RowsAdded Ereignishandler auf, um neue Zeilen an der richtigen Position zu sortieren. Möglicherweise möchten Sie die DataGridView.Sort Methode auch in einem CellValueChanged Ereignishandler aufrufen, um die Zeilen zu sortieren, wenn der Benutzer eine Zelle ändert.

Important

Aufgrund eines Fehlers reagiert die Methode nicht InsertRange 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 abbrechen, bevor Sie diese Methode aufrufen, und anschließend die Zeilen erneut auswählen. Weitere Informationen finden Sie im Codebeispiel in diesem Thema.

Gilt für:

Weitere Informationen