Ich habe eine Combobox an eine Datenquelle "StatusListBindingSource" mit Status und StatusID gebunden. Ich brauche den Index des gefundenen Artikels. Ich werde den Index Me.cmbResult.SelectedIndex
Finden Sie den Index der Combobox Element mit Objekt Wert
Dies funktioniert gut einstellen verwenden, außer ich will nicht ein für/jede Schleife verwenden:
Private Sub SetStatusIndex(ByVal StatusValue As Integer)
Dim ItemIndex As Integer = -1
Dim ct As Integer = 0
For Each dView As DataRowView In Me.cmbResult.Items
If dView.Row.Item("StatusID") = StatusValue Then
ItemIndex = ct
Exit For
End If
ct += 1
Next
Me.cmbResult.SelectedIndex = ItemIndex
End Property
Hier ist, was ich tun möchte:
Dim a As ComboBox.ObjectCollection = Me.cmbResult.Items
'can't cast like this
Dim lisDRView As List(Of DataRowView) = a.Cast(Of DataRowView)()
'I'd like to use something like .find
Dim drView As DataRowView = lisDRView.Find(Function(x) x.Row.Item("StatusID") = StatusValue)
'there is no drView.index so this fails
Me.cmbResult.SelectedIndex = drView.index
Aber ich bin immer eine Ausnahme auf a.Cast(Of DataRowView)()
und natürlich gibt es keine drView.index
ungültig castexception: Das Objekt des Typs 'd__aa'1 [System.Data.DataRowView]' konnte nicht in den Typ 'System.Collections.Generic.List`1 [System.Data.DataRowView]' umgewandelt werden.
Wie bekomme ich den Index des Artikels mit gegebenem StatusValue mit Find?