如何在 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 中将方法名称作为过程的参数传递

在 VB.NET 中将 UTF-8 转换为 windows-1255 编码

在 vb.net 中将“字符串”转换为“SQlCommand”

在 VB.net 中将多种文件类型保存到一个 potobuf-net 化的文件中