vb.net - 从组合框中获取所选项目

标签 vb.net winforms combobox

我有一个包含来自 DataTable 的项目的组合框,ff 在表单加载时执行:

dbConnection = New SqlCeConnection("Data Source=Journal.sdf")
dbDataAdapter = New SqlCeDataAdapter("SELECT * FROM setting_unit", dbConnection)
dbDataAdapter.Fill(dbTable)
cbxSettingsUnit.DataSource = New BindingSource(dbTable, Nothing)
cbxSettingsUnit.DisplayMember = "name"
cbxSettingsUnit.ValueMember = "name"

组合框发生变化时的方法:

Private Sub cbxSettingsUnit_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbxSettingsUnit.SelectedIndexChanged
   tempString = cbxSettingsBusinessUnit.Items(cbxSettingsBusinessUnit.SelectedItem).ToString
   MessageBox.Show(tempString)
End Sub

行有错误:

tempString = cbxSettingsBusinessUnit.Items(cbxSettingsBusinessUnit.SelectedItem).ToString

如何从组合框中获取所选项目?

最佳答案

大多数.net “listing-controls” 拥有DataSource 属性搜索IListSource 的实现.因此,如果您将 DataTable 设置为数据源,您实际上是将 DataTable.DefaultView 设置为数据源。

Me.ComboBox1.DataSource = myDataTabele

等于

Me.ComboBox1.DataSource = myDataTabele.DefaultView

所以现在你有一个包含 DataRowView 类型项目的 ComboBox。

Dim selectedRowView As DataRowView = DirectCast(Me.ComboBox1.SelectedItem, DataRowView)
Dim selectedDisplayMemberValue As String = Me.ComboBox1.SelectedText
Dim selectValueMemberValue As Object = Me.ComboBox1.SelectedValue

你应该这样做:

Private Sub cbxSettingsUnit_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbxSettingsUnit.SelectedIndexChanged
    Dim item As DataRowView = TryCast(Me.cbxSettingsUnit.SelectedItem, DataRowView)
    If (Not item Is Nothing) Then
        With item.Row
            'You have now access to the row of your table.
            Dim columnValue1 As String = .Item("MyColumnName1").ToString()
            Dim columnValue2 As String = .Item("MyColumnName2").ToString()
        End With
    End If
End Sub

那么为什么会出现错误?是的,您正在尝试将 DataRowView 转换为 Integer。

'                                                                      |
tempString = cbxSettingsBusinessUnit.Items(cbxSettingsBusinessUnit.SelectedItem).ToString

关于vb.net - 从组合框中获取所选项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20780229/

相关文章:

c# - C# Linq 语法-vs- VB Linq 语法比较

database - 如何根据数据的可用性检查和输入来自 "2 Textboxes"的数据以从 VB .Net Access

asp.net - VB.net session 变量计数器未添加

javascript - 如何在 Ext JS 中使用当前值进行模板调节?

c# - WPF ComboBox...如何设置 .Text 属性?

vb.net - 如何使用 POP3 从垃圾文件夹下载电子邮件

c# - 如何获取表单主动控件?

C# Windows 应用程序窗体到 Html 窗体

c# - 调整 MenuStrip 的宽度

wpf - 串行端口 WPF ComboBox 数据绑定(bind)