求助: DataGridView中以DataGridViewComboBoxCell方式实现下拉列表方式报错
我希望在DataGridView中单击【性别】列某单元格,下拉出备选项:"","男","女",用此方式完成表格的编辑。代码如下:Private Sub DataGridView1_CellBeginEdit(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles DataGridView1.CellBeginEdit
Dim a As Integer = DataGridView1.CurrentCell.RowIndex, b As Integer = DataGridView1.CurrentCell.ColumnIndex
Dim Cell As New DataGridViewComboBoxCell
Select Case DataGridView1.Columns(e.ColumnIndex).HeaderText
Case "性别"
Cell.Items.AddRange(New Object() {"", "男", "女"}) '也可以在此处读表,动态循环添加字段值
Cell.MaxDropDownItems = 40
Cell.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing '确保离开当前单元格后恢复为文本框显示状态
DataGridView1.Rows(a).Cells(b) = Cell
End Select
End Sub
运行时效果符合预期,但是偶尔会报错退出,报错信息如下:
未处理 InvalidOperationException
操作无效,原因是它导致对 SetCurrentCellAddressCore 函数的可重入调用。
排查了很久,起初误以为是大量的历史数据中或许存在null值造成的,
后来发现:如果【性别】列是第3列的话,那么只有在第3行的位置点击单元格才会出错,也就是 a = b 时报错。我的VS版本2010
求大侠、大神们帮我分析一下到底咋回事吧,拜托拜托,谢谢谢谢!
[ 本帖最后由 XIHONGSHI 于 2014-12-16 13:56 编辑 ]