DataGridViewRowCollection.AddRange(DataGridViewRow[]) Metodo

Definizione

Aggiunge alla raccolta gli oggetti DataGridViewRow specificati.

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

Parametri

dataGridViewRows
DataGridViewRow[]

Matrice di oggetti DataGridViewRow da aggiungere a DataGridViewRowCollection.

Eccezioni

dataGridViewRows è null.

dataGridViewRows contiene una sola riga e tale riga contiene più celle rispetto alle colonne del controllo.

Il controllo DataGridView associato sta eseguendo una delle azioni seguenti che impedisce temporaneamente l'aggiunta di nuove righe:

  • Selezione di tutte le celle nel controllo.

  • Cancella la selezione.

-oppure-

Questo metodo viene chiamato da un gestore per uno degli eventi di DataGridView seguenti:

-oppure-

La proprietà DataSource di DataGridView non è null.

-oppure-

Almeno una voce nella matrice dataGridViewRows è null.

-oppure-

DataGridView non contiene colonne.

-oppure-

Almeno una riga nella matrice dataGridViewRows ha un valore della proprietà DataGridView non null.

-oppure-

Almeno una riga nella matrice dataGridViewRows ha un valore della proprietà Selected corrispondente a true.

-oppure-

Due o più righe nella matrice dataGridViewRows sono identiche.

-oppure-

Almeno una riga nella matrice dataGridViewRows contiene una o più celle di un tipo non compatibile con quello della colonna corrispondente nel controllo.

-oppure-

Almeno una riga nella matrice dataGridViewRows contiene più celle rispetto alle colonne nel controllo.

-oppure-

Questa operazione aggiunge righe bloccate dopo le righe non bloccate.

Esempio

Nell'esempio di codice seguente viene illustrato come usare il metodo quando viene selezionata la riga per i nuovi record per risolvere il AddRange bug indicato nella sezione Osservazioni.

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

Commenti

Il AddRange metodo aggiunge righe condivise a DataGridViewRowCollection, se possibile. In caso contrario, le nuove righe non vengono condivise. Per altre informazioni, vedere Procedure consigliate per ridimensionare il controllo DataGridView Windows Form.

Le righe nel controllo non vengono ordinate automaticamente quando vengono aggiunte nuove righe. Per ordinare nuove righe nella posizione corretta, chiamare il DataGridView.Sort metodo in un DataGridView.RowsAdded gestore eventi. È anche possibile chiamare il DataGridView.Sort metodo in un CellValueChanged gestore eventi per ordinare le righe quando l'utente modifica una cella.

Importante

A causa di un bug, il AddRange metodo eseguirà la risposta dell'applicazione se la AllowUserToAddRows proprietà è true e la riga per i nuovi record è selezionata. Per risolvere questo bug, è necessario annullare la selezione della riga prima di chiamare questo metodo e quindi selezionare nuovamente la riga. Per altre informazioni, vedere l'esempio di codice in questo argomento.

Si applica a

Vedi anche