DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.