Sdílet prostřednictvím


DataGridViewRowCollection.AddRange(DataGridViewRow[]) Metoda

Definice

Přidá zadané DataGridViewRow objekty do kolekce.

public:
 virtual void AddRange(... cli::array <System::Windows::Forms::DataGridViewRow ^> ^ dataGridViewRows);
public virtual void AddRange (params System.Windows.Forms.DataGridViewRow[] dataGridViewRows);
abstract member AddRange : System.Windows.Forms.DataGridViewRow[] -> unit
override this.AddRange : System.Windows.Forms.DataGridViewRow[] -> unit
Public Overridable Sub AddRange (ParamArray dataGridViewRows As DataGridViewRow())

Parametry

dataGridViewRows
DataGridViewRow[]

Pole DataGridViewRow objektů, které se mají přidat do objektu DataGridViewRowCollection.

Výjimky

dataGridViewRows je null.

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ě zabrá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 je volána z obslužné rutiny pro jednu z následujících DataGridView událostí:

-nebo-

Vlastnost DataSource objektu DataGridView není null.

-nebo-

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

-nebo-

Pole 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 matici dataGridViewRows 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ž kolik je sloupců ovládacího prvku.

-nebo-

Tato operace by po rozbalování řádků přidala ukotvené řádky.

Příklady

Následující příklad kódu ukazuje, jak použít metodu AddRange , když je vybrán řádek pro nové záznamy pro řešení chyby uvedené v části Poznámky.

// Workaround for bug that prevents DataGridViewRowCollection.AddRange
// from working when the row for new records is selected. 
private void AddRows(params DataGridViewRow[] rows)
{
    InsertRows(dataGridView1.RowCount - 1, rows);
}

// 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.AddRange
' from working when the row for new records is selected. 
Private Sub AddRows(ByVal ParamArray rows As DataGridViewRow())
    InsertRows(dataGridView1.RowCount - 1, rows)
End Sub

' 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 AddRange přidá sdílené řádky do objektu DataGridViewRowCollection, pokud je to možné. V opačném případě se nové řádky nesdílejí. 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. Chcete-li 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, která seřadí řádky, když uživatel změní buňku.

Důležité

Z důvodu chyby metoda způsobí, že AddRange aplikace přestane reagovat, pokud AllowUserToAddRows je true vlastnost nastavena a je vybrán řádek pro nové záznamy. Chcete-li tuto chybu vyřešit, musíte zrušit výběr řádku před voláním této metody a pak řádek znovu vybrat. Další informace najdete v příkladu kódu v tomto tématu.

Platí pro

Viz také