DataGridViewRowCollection.AddRange(DataGridViewRow[]) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Adiciona os objetos DataGridViewRow especificados à coleção.
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())
Parâmetros
- dataGridViewRows
- DataGridViewRow[]
Uma matriz de objetos DataGridViewRow a serem adicionados ao DataGridViewRowCollection.
Exceções
dataGridViewRows
é null
.
dataGridViewRows
contém somente uma linha e a linha que ele contém tem mais células do que as colunas no controle.
O controle DataGridView associado está executando uma das seguintes ações, que impedem temporariamente que novas linhas sejam adicionadas:
Selecionar todas as células no controle.
Limpar a seleção.
- ou -
Esse método está sendo chamado de um manipulador para um dos seguintes eventos DataGridView:
- ou -
A propriedade DataSource do DataGridView não é null
.
- ou -
Pelo menos uma entrada na matriz dataGridViewRows
é null
.
- ou -
O DataGridView não tem colunas.
- ou -
Pelo menos uma linha da matriz dataGridViewRows
tem um valor da propriedade DataGridView que não é null
.
- ou -
Pelo menos uma linha da matriz dataGridViewRows
tem um valor da propriedade Selected de true
.
- ou -
Duas ou mais linhas na matriz dataGridViewRows
são idênticas.
- ou -
Pelo menos uma linha da matriz dataGridViewRows
contém uma ou mais células de um tipo incompatível com o tipo da coluna correspondente no controle.
- ou -
Pelo menos uma linha da matriz dataGridViewRows
contém mais células do que as colunas no controle.
- ou -
Essa operação adicionará as linhas congeladas após as linhas não congeladas.
Exemplos
O exemplo de código a seguir demonstra como usar o AddRange método quando a linha para novos registros é selecionada para contornar o bug indicado na seção Comentários.
// 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
Comentários
O AddRange método adiciona linhas compartilhadas ao DataGridViewRowCollection, se possível. Caso contrário, as novas linhas não serão compartilhadas. Para obter mais informações, consulte Práticas recomendadas para colocação em escala do controle DataGridView dos Windows Forms.
As linhas no controle não são classificadas automaticamente quando novas linhas são adicionadas. Para classificar novas linhas em sua posição correta, chame o DataGridView.Sort método em um DataGridView.RowsAdded manipulador de eventos. Talvez você também queira chamar o DataGridView.Sort método em um CellValueChanged manipulador de eventos para classificar as linhas quando o usuário modificar uma célula.
Importante
Devido a um bug, o método fará com que seu AddRange aplicativo pare de responder se a AllowUserToAddRows propriedade for true
e a linha de novos registros estiver selecionada. Para contornar esse bug, você deve cancelar a seleção da linha antes de chamar esse método e, em seguida, selecionar novamente a linha. Para obter mais informações, consulte o exemplo de código neste tópico.