DataGridViewRowCollection.AddRange(DataGridViewRow[]) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Lägger till de angivna DataGridViewRow objekten i samlingen.
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())
Parametrar
- dataGridViewRows
- DataGridViewRow[]
En matris med DataGridViewRow objekt som ska läggas till i DataGridViewRowCollection.
Undantag
dataGridViewRows är null.
dataGridViewRows innehåller bara en rad och den rad som den innehåller har fler celler än det finns kolumner i kontrollen.
Den associerade DataGridView kontrollen utför någon av följande åtgärder som tillfälligt förhindrar att nya rader läggs till:
Markera alla celler i kontrollen.
Rensa markeringen.
-eller-
Den här metoden anropas från en hanterare för någon av följande DataGridView händelser:
-eller-
Egenskapen DataSource för DataGridView är inte null.
-eller-
Minst en post i matrisen dataGridViewRows är null.
-eller-
Har DataGridView inga kolumner.
-eller-
Minst en rad i matrisen dataGridViewRows har ett DataGridView egenskapsvärde som inte nullär .
-eller-
Minst en rad i matrisen dataGridViewRows har egenskapsvärdet Selectedtrue.
-eller-
Två eller flera rader i matrisen dataGridViewRows är identiska.
-eller-
Minst en rad i matrisen dataGridViewRows innehåller en eller flera celler av en typ som inte är kompatibel med typen av motsvarande kolumn i kontrollen.
-eller-
Minst en rad i matrisen dataGridViewRows innehåller fler celler än det finns kolumner i kontrollen.
-eller-
Den här åtgärden skulle lägga till frusna rader efter att rader som inte har frysts.
Exempel
I följande kodexempel visas hur du använder AddRange metoden när raden för nya poster väljs för att kringgå felet som anges i avsnittet Kommentarer.
// 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
Kommentarer
Metoden AddRange lägger till delade rader i DataGridViewRowCollection, om möjligt. I annat fall tas de nya raderna bort. Mer information finns i Best Practices for Scaling the Windows Forms DataGridView Control.
Rader i kontrollen sorteras inte automatiskt när nya rader läggs till. Om du vill sortera nya rader i rätt position anropar du DataGridView.Sort metoden i en DataGridView.RowsAdded händelsehanterare. Du kanske också vill anropa DataGridView.Sort metoden i en CellValueChanged händelsehanterare för att sortera raderna när användaren ändrar en cell.
Important
På grund av en bugg AddRange kommer metoden att göra så att programmet slutar svara om AllowUserToAddRows egenskapen är true och raden för nya poster har valts. Om du vill kringgå den här buggen måste du avbryta valet av raden innan du anropar den här metoden och sedan avmarkera raden igen. Mer information finns i kodexemplet i det här avsnittet.