Udostępnij za pośrednictwem


DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Metoda

Definicja

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 nullma 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 nulljest .

-lub-

Co najmniej jeden wiersz w tablicy dataGridViewRows ma Selected wartość truewł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.

Dotyczy

Zobacz też