Bagikan melalui


DataGridViewRowCollection.AddRange(DataGridViewRow[]) Metode

Definisi

Menambahkan objek yang ditentukan DataGridViewRow ke koleksi.

public:
 virtual void AddRange(... cli::array <System::Windows::Forms::DataGridViewRow ^> ^ dataGridViewRows);
public virtual void AddRange (params System.Windows.Forms.DataGridViewRow[] dataGridViewRows);
abstract member AddRange : System.Windows.Forms.DataGridViewRow[] -> unit
override this.AddRange : System.Windows.Forms.DataGridViewRow[] -> unit
Public Overridable Sub AddRange (ParamArray dataGridViewRows As DataGridViewRow())

Parameter

dataGridViewRows
DataGridViewRow[]

Array DataGridViewRow objek yang akan ditambahkan ke DataGridViewRowCollection.

Pengecualian

dataGridViewRowsadalah null.

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-

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

-atau-

Dua baris atau lebih dalam dataGridViewRows array identik.

-atau-

Setidaknya satu baris dalam dataGridViewRows array berisi satu atau beberapa sel jenis 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 menambahkan baris beku setelah baris yang tidak dibekukan.

Contoh

Contoh kode berikut menunjukkan cara menggunakan AddRange metode ketika baris untuk rekaman baru dipilih untuk mengatasi bug yang ditunjukkan di bagian Keterangan.

// Workaround for bug that prevents DataGridViewRowCollection.AddRange
// from working when the row for new records is selected. 
private void AddRows(params DataGridViewRow[] rows)
{
    InsertRows(dataGridView1.RowCount - 1, rows);
}

// 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.AddRange
' from working when the row for new records is selected. 
Private Sub AddRows(ByVal ParamArray rows As DataGridViewRow())
    InsertRows(dataGridView1.RowCount - 1, rows)
End Sub

' 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 AddRange 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, AddRange metode akan membuat aplikasi Anda berhenti merespons jika AllowUserToAddRows properti adalah true dan baris untuk rekaman baru dipilih. Untuk mengatasi bug ini, Anda harus membatalkan pemilihan baris sebelum memanggil metode ini, lalu memilih kembali baris. Untuk informasi selengkapnya, lihat contoh kode dalam topik ini.

Berlaku untuk

Lihat juga