如何在 vb.net 中将 datagridview 单元格样式从默认文本框更改为组合框?
Posted
技术标签:
【中文标题】如何在 vb.net 中将 datagridview 单元格样式从默认文本框更改为组合框?【英文标题】:How to change a datagridview cell style from the default textbox to combobox in vb.net? 【发布时间】:2012-10-17 04:26:01 【问题描述】:我有一个从数据集填充的 datagridview。
一旦它被填充,如果用户点击一行,最后一列应该从文本框变为组合框。
我正在使用 vb.net 2010。 在 Datagridview1 CellClick 事件上:
With DataGridView1
If .Rows.Count = 0 Then Exit Sub
i = Datagridview1.currentrow.index
Dim gridComboBox As New DataGridViewComboBoxCell
gridComboBox.Items.Add("A") 'Populate the Combobox
gridComboBox.Items.Add("B") 'Populate the Combobox
gridComboBox.Items.Add("C") 'Populate the Combobox
.Item(8, i) = gridComboBox
End With
但这会导致错误:
The following exception occurred in DataGridView:
System.Argument.Exception: DataGridViewComboBoxCell value is not valid.
To replace this default dialog please handle the DataError event.
如果情况不可行,我希望在从数据集中填充数据时,最后一列的类型为组合框。
DataGridView1.DataSource = myDataSet
提前致谢。
【问题讨论】:
我的价值是什么? 抱歉,我没看到。 i = Datagridview1.CurrentRow.Index,感谢您指出。 【参考方案1】:好的,这是我通过一些测试得出的结论。 只要单元格的值与下拉选项之一相同,您的代码就可以工作。但是,如果您放置组合框的单元格值为“D”(cmbbox 只有“A”、“B”和“C”),您将收到此错误消息。
因此,要么在组合框中输入当前值作为选项,要么确保单元格只能有 A、B 或 C 作为值,或者只是通过将其值设置为“”来清除单元格。然后这将起作用。 :)
【讨论】:
你是对的,comboboxcell 的值应该在它的列表中。我正在解决这个问题,所以我只是用值 A、B、C 填充组合框单元格。再次感谢。以上是关于如何在 vb.net 中将 datagridview 单元格样式从默认文本框更改为组合框?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 VB.NET 中将可为空的 DateTime 设置为空?
如何在 VB.NET 中将 '<unnamed portal 1>' 转换为 plpgsql 函数的数据集
在 VB.NET 中将 UTF-8 转换为 windows-1255 编码