2011-07-11 24 views
1

我想知道這是否可能。我有一個列表表(lstTable),它與我試圖用公共結構(ELEM_DATA)中的信息填充的表單形式相同。我明白嵌套語句將工作,如果是同一個範圍內,但我怎麼能做到這一點與下面的實例2: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 

我並不知道它是否可能,或者它是否會像將(.name)更改爲其他內容一樣簡單。

+0

你嘗試了嗎?你做了什麼事? –

+0

當我嘗試它時不斷說.name不是lstTable的成員。 – jinanwow

回答

2

嵌套有聲明工作(請參閱有關衝突的註釋)。不幸的是,你不能在內部使用外部成員。但是由於你的WITH 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