DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.