0

VB.NET (2010)

Value 項目と Display 項目を含む ComboBox を作成しようとしています。関連するコードは次のとおりです。私はもともとまったく同じ結果でデータテーブルを使用しようとしました:

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    Try
        cmbFromGroup.Items.Clear()
        ItemList.Clear()
        Item = New SelectionItem(KeyValue, DisplayValue)
        'Link combobox and Item
        ItemList.Add(Item)
        cmbFromGroup.DataSource = ItemList
        cmbFromGroup.DisplayMember = "Display"
        cmbFromGroup.ValueMember = "Key"
    Catch ex As Exception
        Stop
    End Try
End Sub

Private Sub cmbFromGroup_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbFromGroup.SelectedIndexChanged
    Try
        cmbFromMP3.Items.Clear()
        Dim x As String = cmbFromGroup.SelectedValue
        ' <snip>
        cmbFromMP3.SelectedIndex = 0
    Catch ex As Exception
        Stop
    End Try
End Sub

Public Interface ISelectionItem
    Property Key As String
    Property Display As String
End Interface

Public Class SelectionItem
    Implements ISelectionItem

    Public Sub New(ByVal vKey As String, ByVal vDisplay As String)
        _Key = vKey
        _Display = vDisplay
    End Sub

    Public Property Key As String Implements ISelectionItem.Key
    Public Property Display As String Implements ISelectionItem.Display

End Class

私が抱えている問題は、cmbFromGroup.SelectedValue に選択した項目の値が含まれていないことです。

私が得ているのは(Watchから)cmbFromGroup.SelectedValue {Player.SelectionItem}オブジェクトです

cmbFromGroup.SelectedValue から取得できる唯一のオプションは、Equals、GetHashCode、GetType、ReferenceEquals、および ToString ですが、期待どおりに ValueMember を取得できるものはありません。

選択したアイテムから ValueMember を取得するにはどうすればよいですか?

4

4 に答える 4

2

.textコンボで使用:

Dim x As String = cmbFromGroup.text
于 2014-08-22T16:00:04.190 に答える
1

私が最終的に思いついた解決策は

cmbFromGroup.SelectedIndex = -1

次に、cmbFromGroup_SelectedIndexChanged サブでそれをトラップします。

于 2013-08-08T12:32:08.483 に答える
0

値をComboBoxアイテムに関連付けようとしたときに同様の問題が発生しました。最終的には次のようなものでした。

Public Class Form1
    Dim ValuesList As List(Of String) = New List(Of String)
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For i = 1 To 10
            ComboBox1.Items.Add("Item" & i)
            ValuesList.Add("Value" & i)
        Next
    End Sub

    Private Sub ComboBox1_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles ComboBox1.SelectionChangeCommitted
        Dim selectedItem = ComboBox1.SelectedItem
        Dim selectedItemValue As String = ValuesList.Item(ComboBox1.SelectedIndex)
        MsgBox(selectedItem & " " & selectedItemValue)
    End Sub
End Class
于 2013-08-07T20:45:29.540 に答える