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 параметра DataGridView не равно null
.
-или-
По меньшей мере одна запись в массиве dataGridViewRows
имеет значение null
.
-или-
Таблица DataGridView не содержит столбцов.
-или-
По крайней мере одна строка в массиве dataGridViewRows
имеет значение свойства DataGridView, не равное null
.
-или-
По крайней мере одна строка в массиве dataGridViewRows
имеет значение свойства Selected, равное 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
и выбрана строка для новых записей. Чтобы обойти эту ошибку, необходимо отменить выбор строки перед вызовом этого метода, а затем повторно выбрать строку. Дополнительные сведения см. в примере кода в этом разделе.