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í.
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.