DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Methode

Definitie

Hiermee worden de DataGridViewRow objecten op de opgegeven positie in de verzameling ingevoegd.

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

Parameters

rowIndex
Int32

De positie waarop de rijen moeten worden ingevoegd.

dataGridViewRows
DataGridViewRow[]

Een matrix met DataGridViewRow objecten die moeten worden toegevoegd aan de DataGridViewRowCollection.

Uitzonderingen

dataGridViewRows is null.

rowIndex is kleiner dan nul of groter dan het aantal rijen in de verzameling.

dataGridViewRows bevat slechts één rij en de rij bevat meer cellen dan er kolommen in het besturingselement zijn.

Het bijbehorende DataGridView besturingselement voert een van de volgende acties uit die tijdelijk verhinderen dat nieuwe rijen worden toegevoegd:

  • Alle cellen in het besturingselement selecteren.

  • De selectie wissen.

– of –

Deze methode wordt aangeroepen vanuit een handler voor een van de volgende DataGridView gebeurtenissen:

– of –

rowIndex is gelijk aan het aantal rijen in de verzameling en AllowUserToAddRows is true.

– of –

De DataSource eigenschap van het DataGridView is niet null.

– of –

Ten minste één vermelding in de dataGridViewRows matrix is null.

– of –

De DataGridView kolom heeft geen kolommen.

– of –

Ten minste één rij in de dataGridViewRows matrix heeft een DataGridView eigenschapswaarde die niet nullis.

– of –

Ten minste één rij in de dataGridViewRows matrix heeft een Selected eigenschapswaarde van true.

– of –

Twee of meer rijen in de dataGridViewRows matrix zijn identiek.

– of –

Ten minste één rij in de dataGridViewRows matrix bevat een of meer cellen van een type dat niet compatibel is met het type van de corresponderende kolom in het besturingselement.

– of –

Ten minste één rij in de dataGridViewRows matrix bevat meer cellen dan er kolommen in het besturingselement zijn.

– of –

Met deze bewerking worden geblokkeerde rijen ingevoegd nadat rijen zijn uitgeschakeld of rijen die niet zijn bevroren voor geblokkeerde rijen.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u de InsertRange methode gebruikt om rijen in te voegen vóór geselecteerde rijen om de fout te omzeilen die wordt aangegeven in de sectie Opmerkingen.

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

Opmerkingen

Met de InsertRange methode worden gedeelde rijen toegevoegd aan de DataGridViewRowCollection, indien mogelijk. Anders worden de nieuwe rijen niet gedeeld. Zie Best practices voor het schalen van het Windows Forms DataGridView-besturingselement voor meer informatie.

Rijen in het besturingselement worden niet automatisch gesorteerd wanneer er nieuwe rijen worden toegevoegd. Als u nieuwe rijen in de juiste positie wilt sorteren, roept u de DataGridView.Sort methode aan in een DataGridView.RowsAdded gebeurtenis-handler. U kunt ook de DataGridView.Sort methode aanroepen in een CellValueChanged gebeurtenishandler om de rijen te sorteren wanneer de gebruiker een cel wijzigt.

Important

Vanwege een fout reageert uw InsertRange toepassing niet meer als er rijen met een index groter zijn dan rowIndex geselecteerd. Als u deze fout wilt omzeilen, moet u de selectie van deze rijen annuleren voordat u deze methode aanroept en de rijen daarna opnieuw selecteren. Zie het codevoorbeeld in dit onderwerp voor meer informatie.

Van toepassing op

Zie ook