Bagikan melalui


DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Metode

Definisi

Sisipkan objek ke DataGridViewRow dalam koleksi pada posisi yang ditentukan.

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())

Parameter

rowIndex
Int32

Posisi untuk menyisipkan baris.

dataGridViewRows
DataGridViewRow[]

Array DataGridViewRow objek untuk ditambahkan ke DataGridViewRowCollection.

Pengecualian

dataGridViewRowsadalah null.

rowIndex kurang dari nol atau lebih besar dari jumlah baris dalam koleksi.

dataGridViewRows hanya berisi satu baris, dan baris yang dikandungnya memiliki lebih banyak sel daripada kolom dalam kontrol.

Kontrol terkait DataGridView melakukan salah satu tindakan berikut yang untuk sementara mencegah baris baru ditambahkan:

  • Memilih semua sel dalam kontrol.

  • Menghapus pilihan.

-atau-

Metode ini dipanggil dari handler untuk salah satu peristiwa berikut DataGridView :

-atau-

rowIndex sama dengan jumlah baris dalam koleksi dan AllowUserToAddRows adalah true.

-atau-

Properti DataSource dari DataGridView bukan null.

-atau-

Setidaknya satu entri dalam dataGridViewRows array adalah null.

-atau-

tidak DataGridView memiliki kolom.

-atau-

Setidaknya satu baris dalam dataGridViewRows array memiliki DataGridView nilai properti yang bukan null.

-atau-

Setidaknya satu baris dalam dataGridViewRows array memiliki Selected nilai properti .true

-atau-

Dua baris atau lebih dalam dataGridViewRows array identik.

-atau-

Setidaknya satu baris dalam dataGridViewRows array berisi satu atau beberapa sel dengan tipe yang tidak kompatibel dengan jenis kolom terkait dalam kontrol.

-atau-

Setidaknya satu baris dalam dataGridViewRows array berisi lebih banyak sel daripada kolom dalam kontrol.

-atau-

Operasi ini akan menyisipkan baris beku setelah baris yang tidak dibekukan atau baris yang tidak dibekukan sebelum baris beku.

Contoh

Contoh kode berikut menunjukkan cara menggunakan InsertRange metode untuk menyisipkan baris sebelum baris yang dipilih untuk mengatasi bug yang ditunjukkan di bagian Keterangan.

// 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

Keterangan

Metode menambahkan InsertRange baris bersama ke DataGridViewRowCollection, jika memungkinkan. Jika tidak, baris baru tidak dibagikan. Untuk informasi selengkapnya, lihat Praktik Terbaik untuk Menskalakan Kontrol Formulir Windows DataGridView.

Baris dalam kontrol tidak diurutkan secara otomatis saat baris baru ditambahkan. Untuk mengurutkan baris baru ke posisi yang benar, panggil DataGridView.Sort metode dalam penanganan DataGridView.RowsAdded aktivitas. Anda mungkin juga ingin memanggil DataGridView.Sort metode dalam CellValueChanged penanganan aktivitas untuk mengurutkan baris saat pengguna memodifikasi sel.

Penting

Karena bug, metode ini InsertRange akan membuat aplikasi Anda berhenti merespons jika ada baris dengan indeks yang lebih besar dari rowIndex yang dipilih. Untuk mengatasi bug ini, Anda harus membatalkan pemilihan baris ini sebelum memanggil metode ini, dan memilih kembali baris setelahnya. Untuk informasi selengkapnya, lihat contoh kode dalam topik ini.

Berlaku untuk

Lihat juga