2011-07-11 7 views
1

これが可能かどうかは疑問です。私は公共の構造(ELEM_DATA)からの情報で記入しようとしているのと同じ形式のリストテーブル(lstTable)を持っています。VB.NETネストされた異なるスコープのステートメント

例1:

With me.lstTable.Items(RECORD) 
    .SubItems(1).text = ELEM_DATA(RECORD).name 
    .SubItems(2).text = ELEM_DATA(RECORD).number 
end with 

例2:

With me.lstTable.Items(RECORD) 
    With ELEM_DATA(RECORD) 
    .SubItems(1).text = .name 
    .SubItems(2).text = .number 
    end with 
end with 

私は私はそれは同じ範囲内であれば動作する文でネストされたが、どのように私は例下記2でこれを行うことができます理解しますそれが可能かどうか、または(.name)を他のものに変更するのと同じくらい簡単なことは分かりませんでした。

+0

試しましたか?あなたがしたとき何が起こったのですか? –

+0

私は試してみたところ、.nameはlstTableのメンバーではないと言っていました。 – jinanwow

答えて

2

ネストされたステートメントの動作(conflictsについてのコメントを参照)。残念ながら、内側の内側の外側のメンバーは使用できません。しかし、あなたの外側のWITHは参照型であるため、あなたがコメントする際にそれを "エイリアス"するためにローカル変数を使用することができます。

Dim l = me.lstTable.Items(RECORD) ' requires 2008 and option infer 
With ELEM_DATA(RECORD) 
    l.SubItems(1).text = .name 
End With 

次に、入れ子になったWITHステートメントの使用方法を示すリンクです。

http://ideone.com/agjne

+0

しかし、ユニークなメンバーのみ。両方のクラスに同じ名前のメンバーがある場合、それらのメンバーはドット表記で使用できず、「フルパス」を使用して明示的に呼び出す必要があります。 – Stefan

+0

@Stefan:ええ、私はそれを含めることを意味しましたが、私の編集で失われました。それを指摘してくれてありがとう。 – jmoreno

+0

完全なパスを実行する代わりに、ELEM_DATA(RECORD)をEとして使用し、EnameとE.numberを実行することは可能でしょうか? – jinanwow

関連する問題