Jazyk

DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Metoda

Definice

Vloží DataGridViewRow objekty do kolekce na zadané pozici.

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

Parametry

rowIndex
Int32

Pozice, do které chcete vložit řádky.

dataGridViewRows
DataGridViewRow[]

Pole DataGridViewRow objektů, které chcete přidat do objektu DataGridViewRowCollection.

Výjimky

dataGridViewRows je null.

rowIndex je menší než nula nebo větší než počet řádků v kolekci.

dataGridViewRows obsahuje pouze jeden řádek a řádek, který obsahuje více buněk, než jsou sloupce v ovládacím prvku.

Přidružený DataGridView ovládací prvek provádí jednu z následujících akcí, které dočasně brání přidání nových řádků:

  • Výběr všech buněk v ovládacím prvku

  • Vymazání výběru.

nebo

Tato metoda se volá z obslužné rutiny pro jednu z následujících DataGridView událostí:

nebo

rowIndex je roven počtu řádků v kolekci a AllowUserToAddRows je true.

nebo

Vlastnost DataSourceDataGridView není null.

nebo

Nejméně jedna položka v dataGridViewRows poli je null.

nebo

Neobsahuje DataGridView žádné sloupce.

nebo

Nejméně jeden řádek v dataGridViewRows poli má DataGridView hodnotu vlastnosti, která není null.

nebo

Nejméně jeden řádek v dataGridViewRows poli má Selected hodnotu truevlastnosti .

nebo

Dva nebo více řádků v dataGridViewRows poli jsou identické.

nebo

Nejméně jeden řádek v dataGridViewRows poli obsahuje jednu nebo více buněk typu, které nejsou kompatibilní s typem odpovídajícího sloupce v ovládacím prvku.

nebo

Nejméně jeden řádek v dataGridViewRows poli obsahuje více buněk, než jsou sloupce v ovládacím prvku.

nebo

Tato operace vloží ukotvené řádky za řádky nebo řádky, které se zruší, před ukotvenými řádky.

Příklady

Následující příklad kódu ukazuje, jak pomocí InsertRange metody vložit řádky před vybrané řádky pracovat s chybou uvedenou v části Poznámky.

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

Poznámky

Metoda InsertRange přidá sdílené řádky do DataGridViewRowCollection, pokud je to možné. Jinak se nové řádky nesdílejí. Další informace naleznete v tématu Osvědčené postupy pro škálování ovládacího prvku model Windows Forms DataGridView.

Řádky v ovládacím prvku nejsou automaticky seřazeny při přidání nových řádků. Chcete-li seřadit nové řádky do správné pozice, zavolejte DataGridView.Sort metodu v obslužné rutině DataGridView.RowsAdded události. Můžete také volat metodu DataGridView.Sort v obslužné rutině CellValueChanged události, která seřadí řádky, když uživatel upraví buňku.

Important

Vzhledem k chybě přestane vaše aplikace reagovat, InsertRange pokud jsou vybrány nějaké řádky s indexem větším, než rowIndex je vybráno. Chcete-li tuto chybu obejít, musíte před voláním této metody zrušit výběr těchto řádků a potom znovu vybrat řádky. Další informace najdete v příkladu kódu v tomto tématu.

Platí pro

Viz také