我正在尝试将Arraylist中的值添加到网格视图的特定列。 as:
If (Arr_NewContacts.Count > 0) Then
dgvStayout.Rows.Clear() ' **GETTING ERROR HERE**
dgvStayout.Rows.Insert(0, (Arr_NewContacts.Count - 1))
For i As Integer = 0 To Arr_NewContacts.Count - 1
dgvStayout.Rows(i).Cells("Name").Value = Arr_NewContacts(i).ToString
dgvStayout.Rows(i).Cells("CheckIn Date").Value = Date.Today
dgvStayout.Rows(i).Cells("CheckOut Date").Value = Date.Today
IsStayGrid_added = True
Next
End If
DataGrid属性,如AllowUserToAddRows和AllowUserToDeleteRows 已经设置为true:
我在其中一个文本框的丢失焦点事件上使用上面的代码。
由于
答案 0 :(得分:4)
今天早上我遇到了类似的问题并追查了这个例外的原因。我看了一下DataGridView源代码,发现在Columns and Rows中清除方法代码正在检查名为NoDimensionChangeAllowed的内部属性。如果这是false,则抛出InvalidOperationException,并显示“无法在此事件处理程序中执行操作”消息。
我发现有八个DataGridView事件处理程序,其中此属性受到影响,您无法修改行数或列数:
CellEnter
CellLeave
CellValidated
CellValidating
RowEnter
RowLeave
RowValidated
RowValidating
因此,您需要确保不会在任何这些处理程序中运行此代码块。如果您必须根据其中一个事件运行代码,那么您需要按照此处的建议通过BeginInvoke运行它:Failure to validate, but cannot remove in DataGridView