Get the SelectedItem of DataGridViewComboBoxCell VB.NET



大家下午好,我现在的问题是,我无法将值选为组合框,我正试图将文本和值设置为数据网格中每个单元格的组合框中的每个项。我的代码:

ClassMyListItem:

Public Class MyListItem
    Private mText As String
    Private mValue As String
    Public Sub New(ByVal pText As String, ByVal pValue As String)
        mText = pText
        mValue = pValue
    End Sub
    Public ReadOnly Property Text() As String
        Get
            Return mText
        End Get
    End Property
    Public ReadOnly Property Value() As String
        Get
            Return mValue
        End Get
    End Property
    Public Overrides Function ToString() As String
        Return mText
    End Function
End Class

表单加载:

DataGridView1.Rows.Add()
Dim dgvcbc As DataGridViewComboBoxCell = DirectCast(DataGridView1.Rows(0).Cells(0), DataGridViewComboBoxCell)
dgvcbc.Items.Add(New MyListItem("Text to be displayed", "value of the item"))

尝试显示所选值:

Dim oItem As MyListItem = CType(**dgvcbc.SelectedItem**, MyListItem)
MessageBox.Show("The Value of the Item selected is: " & oItem.Value)

错误:"SelectedItem"不是"System.Windows.Forms.DataGridViewComboBoxCell"的成员

如果有人知道如何设置值​​并用combobox将文本发送到每个单元格的每个项目,我将非常感谢

您需要根据MSDN文档使用Value属性:

与ComboBox控件不同,DataGridViewComboBoxCell不具有SelectedIndex和SelectedValue属性。相反,选择下拉列表中的值设置单元格的"值"属性。

若要加载DataGridViewComboBoxCell,您需要设置DataSource。

根据数据源中的数据类型,您可能还需要设置DisplayMember以选择要在控件的显示部分显示的属性或列名,并设置ValueMember以在选择项时选择用于设置控件的Value属性的属性或列名称。

以下是MSDN关于数据源的一些附加指南:

通常,将为整列单元格设置此属性通过DataGridViewComboBoxColumn.DataSource属性。

如果可能,请将DataSource设置为仅包含可能选择,就像一列选择。然后DisplayMember不需要设置属性。但如果来源更多复杂,请将DisplayMember设置为属性或列的名称从中检索可能的选择。

如果DataSource设置为字符串数组,则ValueMember和DisplayMember不需要设置,因为数组中的每个字符串将用于值和显示。

因此,在你的情况下,你需要做类似于以下的事情:

Dim cListItems As New System.Collections.Generic.List(Of MyListItem)
cListItems.Add(New MyListItem("Text to be displayed", "value of the item"))
Dim dgvcbc As DataGridViewComboBoxCell = DirectCast(DataGridView1.Rows(0).Cells(0), DataGridViewComboBoxCell)
dgvcbc.DataSource = cListItems
dgvcbc.DisplayMember = "Text"
dgvcbc.ValueMember = "Value"

最后,如果所有单元格的值都相同,那么您可能希望在创建列时将数据源分配给该列。除了用包含datagridviewcomboboxcolumn的变量替换dgvcbc引用外,上述所有代码都将保持不变。

相关内容

  • 没有找到相关文章

最新更新