VBNET datagridview databindingcomplete会被执行2次
时间: 2024-01-20 07:03:04 浏览: 17
可能会有几个原因导致 `databindingcomplete` 事件被触发两次:
1. 如果你在代码中手动绑定了数据源(例如在 `Form_Load` 事件中),那么 `databindingcomplete` 事件会在数据绑定完成后被触发一次。
2. 如果你的数据源中包含了多个表格,那么每个表格的数据绑定都会触发 `databindingcomplete` 事件。
为了避免 `databindingcomplete` 事件被触发两次,你可以在事件处理程序中添加一个标志,用于检测事件是否已经被触发过了,如果已经触发过了,那么就不执行事件处理程序。例如:
```
Private Sub DataGridView1_DataBindingComplete(sender As Object, e As DataGridViewBindingCompleteEventArgs) Handles DataGridView1.DataBindingComplete
If Not e.ListChangedType = ListChangedType.Reset AndAlso Not e.ListChangedType = ListChangedType.ItemMoved AndAlso Not e.ListChangedType = ListChangedType.ItemDeleted Then
If Not Me.DataGridView1.Rows.Count = 0 AndAlso Not Me.isDataBoundComplete Then
Me.isDataBoundComplete = True
'执行事件处理程序的代码
End If
End If
End Sub
```
在这个例子中,`isDataBoundComplete` 是一个标志,用于检测 `databindingcomplete` 事件是否已经被触发过了。如果该事件还没有被触发过,并且数据源中至少有一行数据,那么就执行事件处理程序,并将 `isDataBoundComplete` 的值设置为 `True`,表示该事件已经被触发过了。