DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Metodo

Definizione

Inserisce gli DataGridViewRow oggetti nell'insieme in corrispondenza della posizione specificata.

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

Parametri

rowIndex
Int32

Posizione in corrispondenza della quale inserire le righe.

dataGridViewRows
DataGridViewRow[]

Matrice di DataGridViewRow oggetti da aggiungere all'oggetto DataGridViewRowCollection.

Eccezioni

dataGridViewRows è null.

rowIndex è minore di zero o maggiore del numero di righe nell'insieme.

dataGridViewRows contiene una sola riga e la riga che contiene contiene più celle di quelle presenti nel controllo .

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

  • Selezione di tutte le celle nel controllo .

  • Cancellazione della selezione.

oppure

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

oppure

rowIndex è uguale al numero di righe nell'insieme e AllowUserToAddRows è true.

oppure

La DataSource proprietà di DataGridView non nullè .

oppure

Almeno una voce nella dataGridViewRows matrice è null.

oppure

Non DataGridView dispone di colonne.

oppure

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

oppure

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

oppure

Due o più righe nella dataGridViewRows matrice sono identiche.

oppure

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

oppure

Almeno una riga nella dataGridViewRows matrice contiene più celle di quelle presenti nel controllo .

oppure

Questa operazione inserisce righe bloccate dopo le righe non bloccate o le righe non bloccate prima delle righe bloccate.

Esempio

Nell'esempio di codice seguente viene illustrato come utilizzare il InsertRange metodo per inserire righe prima delle righe selezionate per aggirare il bug indicato nella sezione Osservazioni.

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

Commenti

Il InsertRange metodo aggiunge righe condivise all'oggetto DataGridViewRowCollection, se possibile. In caso contrario, le nuove righe non vengono condivise. Per altre informazioni, vedere Procedure consigliate per il ridimensionamento del controllo DataGridView di 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 metodo impedirà all'applicazione InsertRange di rispondere se sono selezionate righe con un indice maggiore di rowIndex quelle selezionate. Per risolvere questo bug, è necessario annullare la selezione di queste righe prima di chiamare questo metodo e selezionare nuovamente le righe in un secondo momento. Per altre informazioni, vedere l'esempio di codice in questo argomento.

Si applica a

Vedi anche