DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Inserisce gli oggetti DataGridViewRow nella raccolta 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 cui inserire le righe.
- dataGridViewRows
- DataGridViewRow[]
Aggiunge una matrice di oggetti DataGridViewRow da aggiungere all'oggetto DataGridViewRowCollection.
Eccezioni
dataGridViewRows
è null
.
rowIndex
è minore di zero o maggiore del numero di righe contenute nella raccolta.
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.
Cancellazione della selezione.
-oppure-
Questo metodo viene chiamato da un gestore per uno degli eventi di DataGridView seguenti:
-oppure-
rowIndex
è uguale al numero di righe nella raccolta e la proprietà AllowUserToAddRows è true
.
-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 inserisce righe bloccate dopo le righe non bloccate oppure 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 risolvere 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
Se possibile, il InsertRange metodo aggiunge righe condivise a DataGridViewRowCollection. 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 le 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
. Per risolvere questo bug, è necessario annullare la selezione di queste righe prima di chiamare questo metodo e selezionare nuovamente le righe in seguito. Per altre informazioni, vedere l'esempio di codice in questo argomento.