DataGridViewRowCollection.AddRange(DataGridViewRow[]) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Добавляет указанные DataGridViewRow объекты в коллекцию.
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())
Параметры
- dataGridViewRows
- DataGridViewRow[]
Массив DataGridViewRow объектов, добавляемых в объект DataGridViewRowCollection.
Исключения
dataGridViewRows равно null.
dataGridViewRows содержит только одну строку, а строка, содержащая ее, содержит больше ячеек, чем столбцы в элементе управления.
Связанный DataGridView элемент управления выполняет одно из следующих действий, которые временно препятствуют добавлению новых строк:
Выбор всех ячеек в элементе управления.
Очистка выделения.
–или–
Этот метод вызывается из обработчика для одного из следующих DataGridView событий:
–или–
Свойство DataSource не DataGridViewnullявляется .
–или–
По крайней мере одна запись в массиве dataGridViewRowsnull.
–или–
У него DataGridView нет столбцов.
–или–
По крайней мере одна строка в массиве dataGridViewRows имеет DataGridView значение свойства, которое не nullявляется.
–или–
По крайней мере одна строка в массиве dataGridViewRowsSelected имеет значение trueсвойства.
–или–
Две или более строк в массиве dataGridViewRows идентичны.
–или–
По крайней мере одна строка в dataGridViewRows массиве содержит одну или несколько ячеек типа, несовместимого с типом соответствующего столбца в элементе управления.
–или–
По крайней мере одна строка в dataGridViewRows массиве содержит больше ячеек, чем столбцы в элементе управления.
–или–
Эта операция добавит замороженные строки после отмены работы строк.
Примеры
В следующем примере кода показано, как использовать AddRange метод при выборе строки для новых записей, чтобы обойти ошибку, указанную в разделе "Примечания".
// 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
Комментарии
Если AddRange это возможно, метод добавляет общие строки DataGridViewRowCollection. В противном случае новые строки не совместно используются. Дополнительные сведения см. в рекомендациях по масштабированию элемента управления DataGridView в Windows Forms.
Строки в элементе управления не отсортированы автоматически при добавлении новых строк. Чтобы сортировать новые строки в правильное положение, вызовите DataGridView.Sort метод в обработчике DataGridView.RowsAdded событий. Также может потребоваться вызвать DataGridView.Sort метод в CellValueChanged обработчике событий, чтобы отсортировать строки при изменении ячейки пользователем.
Это важно
Из-за ошибки метод перестанет отвечать приложению, AddRange если AllowUserToAddRows свойство имеет значение true , а строка для новых записей выбрана. Чтобы обойти эту ошибку, необходимо отменить выбор строки перед вызовом этого метода, а затем повторно выбрать строку. Дополнительные сведения см. в примере кода в этом разделе.