2017-05-03 2 views
-1

ListViewのメンバーであるListViewDataItemのデータキーにアクセスする方法が不思議です。ListViewDataItemのデータキーにアクセスする方法

私は奇妙な見つけることはデバッグするとき、それをコーディング中にDataKeyContainerにアクセスしようとするともなり得る、不可能であるしかし、ここで

enter image description here

見ることができDataKeysContainerにアクセスすることが可能であるということですここ

enter image description here

見ListViewDataItemためdatakeysとその値にアクセスする方法上の任意のアドバイスをいただければ幸いです。

+1

2番目のスクリーンショットでは、 'ListViewItem' –

+0

@AFriendにキャストしました。 'For Each l ListViewDataItem'に変更すると、必要に応じて機能するはずです。 – Jaxi

+0

申し訳ありませんが、愚かな間違いですが、ListViewDataItemに変更してもまだ問題が残っていますが、私はまだDataKeysにアクセスすることができません - 新しく更新された第2スクリーンショットをご覧ください。 – AF1001

答えて

0

遅延バインド、つまり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だ知っているので、あなたはまた、デザイン時の容易さのためにListViewcontainerを唱えられます。

注:これが機能するには、Option Strict Offが必要です。

+1

ありがとう、私の髪の毛を最後まで一本引っ張ってくれてありがとう – AF1001

+0

これはデザイナーの本来の意図を迂回しているため、絶対に必要なときにのみ使用してください:) – djv

+0

ああ、よく知っています。もう一度あなたの助けに感謝します。 – AF1001

関連する問題