DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Wstawia DataGridViewRow obiekty do kolekcji w określonej pozycji.
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
Położenie, w którym należy wstawić wiersze.
- dataGridViewRows
- DataGridViewRow[]
Tablica DataGridViewRow obiektów do dodania do obiektu DataGridViewRowCollection.
Wyjątki
dataGridViewRows
to null
.
rowIndex
jest mniejsza niż zero lub większa niż liczba wierszy w kolekcji.
dataGridViewRows
zawiera tylko jeden wiersz, a wiersz, który zawiera, zawiera więcej komórek niż kolumny w kontrolce.
Skojarzona DataGridView kontrolka wykonuje jedną z następujących akcji, która tymczasowo uniemożliwia dodawanie nowych wierszy:
Zaznaczanie wszystkich komórek w kontrolce.
Czyszczenie zaznaczenia.
-lub-
Ta metoda jest wywoływana z programu obsługi dla jednego z następujących DataGridView zdarzeń:
-lub-
rowIndex
jest równa liczbie wierszy w kolekcji i AllowUserToAddRows ma wartość true
.
-lub-
Właściwość DataSource obiektu DataGridView nie null
ma wartości .
-lub-
Co najmniej jeden wpis w tablicy dataGridViewRows
to null
.
-lub-
Kolumna DataGridView nie zawiera kolumn.
-lub-
Co najmniej jeden wiersz w dataGridViewRows
tablicy ma DataGridView wartość właściwości, która nie null
jest .
-lub-
Co najmniej jeden wiersz w tablicy dataGridViewRows
ma Selected wartość true
właściwości .
-lub-
Co najmniej dwa wiersze w tablicy dataGridViewRows
są identyczne.
-lub-
Co najmniej jeden wiersz w dataGridViewRows
tablicy zawiera co najmniej jedną komórkę typu niezgodnego z typem odpowiedniej kolumny w kontrolce.
-lub-
Co najmniej jeden wiersz w tablicy dataGridViewRows
zawiera więcej komórek niż kolumny w kontrolce.
-lub-
Ta operacja spowoduje wstawienie zamrożonych wierszy po niezamrożonych wierszach lub niezamrożonych wierszach przed zamrożonymi wierszami.
Przykłady
W poniższym przykładzie kodu pokazano, jak za pomocą InsertRange metody wstawić wiersze przed wybranymi wierszami, aby obejść usterkę wskazaną w sekcji Uwagi.
// 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
Uwagi
Metoda InsertRange dodaje współużytkowane wiersze do elementu DataGridViewRowCollection, jeśli to możliwe. W przeciwnym razie nowe wiersze są nieudostępniane. Aby uzyskać więcej informacji, zobacz Best Practices for Scaling the Windows Forms DataGridView Control (Najlepsze rozwiązania dotyczące skalowania kontrolki DataGridView).
Wiersze w kontrolce nie są automatycznie sortowane po dodaniu nowych wierszy. Aby posortować nowe wiersze w ich prawidłowej pozycji, wywołaj metodę DataGridView.Sort w procedurze obsługi zdarzeń DataGridView.RowsAdded . Można również wywołać metodę DataGridView.Sort w procedurze CellValueChanged obsługi zdarzeń, aby posortować wiersze, gdy użytkownik modyfikuje komórkę.
Ważne
Z powodu usterki metoda spowoduje, że aplikacja przestanie odpowiadać, InsertRange jeśli jakiekolwiek wiersze z indeksem większym niż rowIndex
są zaznaczone. Aby obejść tę usterkę, należy anulować wybór tych wierszy przed wywołaniem tej metody, a następnie ponownie wybrać wiersze. Aby uzyskać więcej informacji, zobacz przykładowy kod w tym temacie.