DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Metod

Definition

Infogar objekten DataGridViewRow i samlingen på den angivna positionen.

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

Parametrar

rowIndex
Int32

Den position där raderna ska infogas.

dataGridViewRows
DataGridViewRow[]

En matris med DataGridViewRow objekt som ska läggas till i DataGridViewRowCollection.

Undantag

dataGridViewRows är null.

rowIndex är mindre än noll eller större än antalet rader i samlingen.

dataGridViewRows innehåller bara en rad och den rad som den innehåller har fler celler än det finns kolumner i kontrollen.

Den associerade DataGridView kontrollen utför någon av följande åtgärder som tillfälligt förhindrar att nya rader läggs till:

  • Markera alla celler i kontrollen.

  • Rensa markeringen.

-eller-

Den här metoden anropas från en hanterare för någon av följande DataGridView händelser:

-eller-

rowIndex är lika med antalet rader i samlingen och AllowUserToAddRows är true.

-eller-

Egenskapen DataSource för DataGridView är inte null.

-eller-

Minst en post i matrisen dataGridViewRows är null.

-eller-

Har DataGridView inga kolumner.

-eller-

Minst en rad i matrisen dataGridViewRows har ett DataGridView egenskapsvärde som inte nullär .

-eller-

Minst en rad i matrisen dataGridViewRows har egenskapsvärdet Selectedtrue.

-eller-

Två eller flera rader i matrisen dataGridViewRows är identiska.

-eller-

Minst en rad i matrisen dataGridViewRows innehåller en eller flera celler av en typ som inte är kompatibel med typen av motsvarande kolumn i kontrollen.

-eller-

Minst en rad i matrisen dataGridViewRows innehåller fler celler än det finns kolumner i kontrollen.

-eller-

Den här åtgärden infogar frusna rader efter ofrysta rader eller avfrysta rader före frysta rader.

Exempel

Följande kodexempel visar hur du använder InsertRange metoden för att infoga rader innan markerade rader för att kringgå felet som anges i avsnittet Kommentarer.

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

Kommentarer

Metoden InsertRange lägger till delade rader i DataGridViewRowCollection, om möjligt. I annat fall tas de nya raderna bort. Mer information finns i Best Practices for Scaling the Windows Forms DataGridView Control.

Rader i kontrollen sorteras inte automatiskt när nya rader läggs till. Om du vill sortera nya rader i rätt position anropar du DataGridView.Sort metoden i en DataGridView.RowsAdded händelsehanterare. Du kanske också vill anropa DataGridView.Sort metoden i en CellValueChanged händelsehanterare för att sortera raderna när användaren ändrar en cell.

Important

På grund av en bugg InsertRange kommer metoden att göra att programmet slutar svara om några rader med ett index är större än rowIndex vad som har valts. Om du vill kringgå den här buggen måste du avbryta valet av dessa rader innan du anropar den här metoden och markera raderna igen efteråt. Mer information finns i kodexemplet i det här avsnittet.

Gäller för

Se även