DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Insere os DataGridViewRow objetos na coleção na posição especificada.
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())
Parâmetros
- rowIndex
- Int32
A posição em que inserir as linhas.
- dataGridViewRows
- DataGridViewRow[]
Um array de DataGridViewRow objetos para adicionar ao DataGridViewRowCollection.
Exceções
dataGridViewRows é null.
rowIndex é inferior a zero ou superior ao número de linhas na coleção.
dataGridViewRows contém apenas uma linha, e a linha que contém tem mais células do que colunas no controlo.
O controlo associado DataGridView está a executar uma das seguintes ações que impede temporariamente a adição de novas linhas:
Selecionar todas as células no controlo.
A limpar a seleção.
-ou-
Este método é chamado a partir de um handler para um dos seguintes DataGridView eventos:
-ou-
rowIndex é igual ao número de linhas na coleção e AllowUserToAddRows é true.
-ou-
A DataSource propriedade do DataGridView não nullé .
-ou-
Pelo menos uma entrada no dataGridViewRows array é null.
-ou-
Não DataGridView tem colunas.
-ou-
Pelo menos uma linha no dataGridViewRows array tem um DataGridView valor de propriedade que não nullé .
-ou-
Pelo menos uma linha no dataGridViewRows array tem um Selected valor de propriedade de true.
-ou-
Duas ou mais linhas no dataGridViewRows array são idênticas.
-ou-
Pelo menos uma linha no dataGridViewRows array contém uma ou mais células de um tipo que é incompatível com o tipo da coluna correspondente no controlo.
-ou-
Pelo menos uma linha do dataGridViewRows array contém mais células do que colunas no controlo.
-ou-
Esta operação inseria filas congeladas atrás de linhas descongeladas ou linhas descongeladas antes das linhas congeladas.
Exemplos
O exemplo de código seguinte demonstra como usar o InsertRange método para inserir linhas antes das linhas selecionadas para contornar o erro indicado na secção de Observações.
// 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
Observações
O InsertRange método adiciona linhas partilhadas ao DataGridViewRowCollection, se possível. Caso contrário, as novas linhas não são partilhadas. Para mais informações, consulte Boas Práticas para Escalar o Controlo Windows Forms DataGridView.
As linhas no controlo não são automaticamente ordenadas quando novas linhas são adicionadas. Para ordenar as novas linhas na sua posição correta, chame o DataGridView.Sort método num DataGridView.RowsAdded gestor de eventos. Também podes querer chamar o DataGridView.Sort método num CellValueChanged gestor de eventos para ordenar as linhas quando o utilizador modifica uma célula.
Importante
Devido a um bug, o InsertRange método fará com que a sua aplicação pare de responder se forem selecionadas linhas com índice superior rowIndex a elas. Para contornar este bug, deve cancelar a seleção destas linhas antes de chamar este método e voltar a selecionar as linhas depois. Para mais informações, veja o exemplo de código neste tópico.