2017-08-27 43 views
0

的ValueMember我有一个数据源分配一个组合框:Winforms-如何获得组合框(我)

Public Sub DataBind(ByVal table As DataTable, ByVal DisplayMember As String, ByVal ValueMember As String) 
    cbox.DataSource = table 
    cbox.DisplayMember = DisplayMember 
    cbox.ValueMember = ValueMember 
End Sub 

我要重复在ComboboxItems每个项目并获取其ValueMember和DisplayMember。 我看了这个帖子ValueMember from ComboBox.Items[i] using WinForms c#

所以我试图

For I As Integer = 0 To cbox.Items.Count - 1 
    Dim val = DirectCast(cbox.Items(I), KeyValuePair(Of Integer, String)).Value 
Next 

,但我得到一个无效转换异常说,指定的强制转换无效。 我在做什么错?

+1

创建像[本C#版]一个'GetItemValue'扩展方法(https://stackoverflow.com/a/38305363/3110834)。 –

+0

DisplayMemeber和Valuemember仍然在DataTable/DataTable中,所以它不清楚你在玩什么 – Plutonix

回答

1

发现了另一种解决方案是什么,我想实现:

Dim row As DataRow = DirectCast(cbox.Items(I), DataRowView).Row 
Dim val As String = (row(cbox.ValueMember)).ToString()