2009-11-30 3 views
0

누군가 ListViewItem의 ReadOnly 속성 ListView에서 ListView 포인터가 저장/제거 된 방법을 알고 있을까요? 어떻게 구현됩니까? ListViewItems가 생성자 New (ListView와 같은 소유자)를 가지고있는 ListViewItemCollection에 저장되어 있지만 ListView에 대한 포인터가 ListViewItem의 ReadOnly 속성에 추가/제거되는 것을 알지 못합니다. ...ReadOnly 속성 ListViewItem의 ListView - 구현 방법은 무엇입니까?

답변

0

ListViewItem에는 ListView에 대한 참조가 있습니다. 멤버 필드. ListView에 ListViewItem을 추가하면 ListView가이 멤버를 업데이트합니다 (이 작업은 ListView.InsertItems 전용 함수 내에서 발생합니다).

읽기 전용 ListView 속성은이 내부 멤버 필드에 대한 공용이지만 읽기 전용 액세스를 제공합니다. (멤버 필드 자체는 하지 읽기 전용입니다.)

download Reflector, 자세한 내용은 내부 목록보기 필드를 할당 할 수있는 다양한 기능을 추적하기 위해 분석 명령을 사용합니다. listView 멤버는 내부적이며이를 수정하는 함수가 private 또는 internal이므로 사용자 코드에서이 구현을 신뢰해서는 안됩니다.

+0

고맙습니다. 이미 코드가 있지만 저에게 이상한 점이 있습니다 ... ListView.InsertItems - ListView call Friend Sub ListViewItem.Host 및 자체에 대한 참조 저장은 물론 ListViewItem 객체가 공개 될 때 Friend Sub Host가 공개되어 있지 않은 이유는 무엇입니까? 만들어진? –

+0

호스트는 ListViewItem의 내부 (Friend) 메소드이기 때문에. 코드를 호출 할 필요가 없습니다. 대신 ListViewItem을 ListView에 연결할 때 (Add 메서드를 통해) ListView가 InsertItems에서 호출합니다. 따라서 호스트를 공개 할 필요가 없습니다. – itowlson

관련 문제