Sdílet prostřednictvím


DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Metoda

Definice

DataGridViewRow Vloží 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

Umístění, na které chcete vložit řádky.

dataGridViewRows
DataGridViewRow[]

Pole DataGridViewRow objektů, které se mají 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, obsahuje více buněk, než je sloupců 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

  • Vymaže se výběr.

-nebo-

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

-nebo-

rowIndex se rovná 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-

Pole DataGridView neobsahuje žádné sloupce.

-nebo-

Alespoň jeden řádek v dataGridViewRows poli má DataGridView hodnotu vlastnosti, která není null.

-nebo-

Alespoň jeden řádek v dataGridViewRows poli má Selected hodnotu vlastnosti .true

-nebo-

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

-nebo-

Alespoň jeden řádek v dataGridViewRows poli obsahuje jednu nebo více buněk typu, který není kompatibilní s typem odpovídajícího sloupce v ovládacím prvku.

-nebo-

Alespoň jeden řádek v matici dataGridViewRows obsahuje více buněk, než je sloupců v ovládacím prvku.

-nebo-

Tato operace vloží ukotvené řádky po zrušení zmrazování řádků nebo řádky 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, aby se obešlo chyba uvedená 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 objektu DataGridViewRowCollection, pokud je to možné. V opačném případě se nové řádky nesdílí. Další informace najdete 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 při přidání nových řádků automaticky seřazeny. Pokud chcete seřadit nové řádky do správné pozice, zavolejte metodu DataGridView.Sort v obslužné rutině DataGridView.RowsAdded události. Můžete také volat metodu DataGridView.Sort v obslužné rutině CellValueChanged události k seřazení řádků, když uživatel upraví buňku.

Důležité

Z důvodu chyby metoda způsobí, že InsertRange aplikace přestane reagovat, pokud jsou vybrány řádky s indexem větším, než rowIndex je. 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é