遅延バインド、つまりObject
のループ変数を使用することができます。これにより、メンバーが実行時にアクセスされるまで、メンバーの検証を延期することができます。これはc#のdynamicと似ています。
For Each itemObject As Object In lstViewModules.Items
' the DataKeysContainer you were looking for
Dim container = CType(itemObject.DataKeysContainer, Control)
' the same l in your loop
Dim l = CType(itemObject, ListViewDataItem)
' from here on, the rest of your loop code should work
Dim key As DataKey = lstViewModules.DataKeys(l.DataItemIndex)
Dim value = key("name")
Next
あなたはそれがListView
だ知っているので、あなたはまた、デザイン時の容易さのためにListView
にcontainer
を唱えられます。
注:これが機能するには、Option Strict Off
が必要です。
出典
2017-05-03 15:45:16
djv
2番目のスクリーンショットでは、 'ListViewItem' –
@AFriendにキャストしました。 'For Each l ListViewDataItem'に変更すると、必要に応じて機能するはずです。 – Jaxi
申し訳ありませんが、愚かな間違いですが、ListViewDataItemに変更してもまだ問題が残っていますが、私はまだDataKeysにアクセスすることができません - 新しく更新された第2スクリーンショットをご覧ください。 – AF1001