2012-05-09 161 views
0

ListViewItem.ListView屬性將在添加到所有者ListView後自動設置。但是ListViewItem.ListView屬性沒有setter。如何設置ListViewItem.ListView屬性?

ListViewItem item = new ListViewItem(); // item.ListView == null here. listView.Items.Add(item); // item.ListView != null where no setter.

我想知道ListViewItem.ListView的實施得到屬性。 在ListView.Items.Add()方法中設置了什麼私人字段?如何? 我試圖創建與ListView和ListViewItem之間的關係類似的類關係。

非常感謝您的幫助。

回答

0

ListViewItemCollection.Add電話(間接)上ListViewItem的內部方法:

internal void Host(ListView parent, int ID, int index) 
{ 
    this.ID = ID; 
    this.listView = parent; 
    if (index != -1) 
    { 
     this.UpdateStateToListView(index); 
    } 
} 

(你可以像反射器或JustDecompile反編譯器看到這個代碼)

+0

非常感謝您提供這個!我完全理解:) – wflwfl

0

屬性具有存儲值的基礎變量。添加到ListView的實現可能會將此變量設置爲正確的值。

+0

感謝您的評論。是的,我也期待同樣的事情,但我一直沒能找到任何方法來訪問外部變量。 – wflwfl

+0

有一個很大的機會,它是無法訪問。你可以使用'ListView.Items.Add(ListViewItem);'將項目添加到ListView中,也許你可以通過將其讀入另一個列表來修改父列表視圖(但不要忘記將其從前一列中移除)。 – Matzi

+0

你的意思是沒有辦法知道變量是如何設置的? – wflwfl