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 especificados DataGridViewRow à 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 DataGridViewRow objetos a serem adicionados ao DataGridViewRowCollection.
Exceções
dataGridViewRows é null.
dataGridViewRows contém apenas uma linha e a linha que ela contém tem mais células do que colunas no controle.
O controle associado DataGridView está executando uma das seguintes ações que impede temporariamente que novas linhas sejam adicionadas:
Selecionando todas as células no controle.
Desmarcando a seleção.
- ou -
Esse método está sendo chamado de um manipulador para um dos seguintes DataGridView eventos:
- ou -
A DataSource propriedade do DataGridView não nullé .
- ou -
Pelo menos uma entrada na dataGridViewRows matriz é null.
- ou -
Não DataGridView tem colunas.
- ou -
Pelo menos uma linha na dataGridViewRows matriz tem um DataGridView valor de propriedade que não nullé .
- ou -
Pelo menos uma linha na dataGridViewRows matriz tem um Selected valor de propriedade de true.
- ou -
Duas ou mais linhas na dataGridViewRows matriz são idênticas.
- ou -
Pelo menos uma linha na dataGridViewRows matriz 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 na dataGridViewRows matriz contém mais células do que colunas no controle.
- ou -
Essa operação adicionaria linhas congeladas após linhas descongeladas.
Exemplos
O exemplo de código a seguir demonstra como usar o AddRange método quando a linha de 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 As práticas recomendadas para dimensionar o 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 estiver 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, reelecionar a linha. Para obter mais informações, consulte o exemplo de código neste tópico.