2014-02-18 2 views
0

В C# или VB.NET Я хотел бы получить контроль ListView, которому принадлежит ListViewItemCollection, что я прохожу к функции, чтобы быть в состоянии сделать что-то вроде этого:Как получить управление владельцем ListViewItemCollection?

Private Sub MySub(ByVal Items As ListView.ListViewItemCollection) 

    ' Suspend the layout on the Listview Control that owns the Items collection. 
    Items.SourceControl.SuspendLayout() 

    Do something with the Items collection... 

    ' Resume the layout on the Listview Control that owns the Items collection. 
    Items.SourceControl.ResumeLayout() 

End Sub 

ответ

1

Если вы попытаетесь создать новый коллекция LVI, вы должны указать контроль LV, владеющей его:

Dim lviCol As new ListViewItemCollection(myListView) 

Но коллекция не подвергает владельца даже в качестве Readonly собственности. Вместо этого, после того, как LVI добавляется к LV (myListView.Items.Add(newLVI)) владелец становится доступным через ListViewitem.ListView собственности:

Dim theParent As ListView = Items(0).ListView 

Он не показывает в браузере объектов по коллекции Items, но под LVI. Конечно, если у LVI Coll нет предметов, которые бомбили!

Обратите внимание, что ListViewItem.ListView не может быть ничем. Когда вы создаете LVI, это ничего, пока вы не добавите его. Аналогичным образом, если у вас есть ссылка на LVI и удалить его из коллекции, это ничего не делает:

Dim lvi As ListViewItem = myLV.Items(n) 
myLV.Items.RemoveAt(n) 

' lvi.ListView is now Nothing, and .Index is -1, so if you need those prop 
' values, save them before you remove. 
Смежные вопросы