Главная Новости Галерея Вопросы Библиотека Контакты

vb.net 리스트뷰 예제

ListView 모양 및 동작에 유연성을 제공 하는 속성의 큰 숫자를 제공 합니다. View 속성을 사용하면 항목이 표시되는 방식을 변경할 수 있습니다. LargeImageList, SmallImageList 및 StateImageList 속성을 사용하면 항목에 대해 표시되는 이미지가 포함된 ImageList 개체를 지정할 수 있으며, StateImageList의 경우 확인란 속성이 설정될 때 표시되는 확인란을 지정할 수 있습니다. 사실입니다. 어떤 항목을 선택했는지 확인하려면 CheckedItems 속성을 사용하여 ListView.CheckedListView항목 컬렉션 컬렉션에 액세스할 수 있습니다. Columns 속성은 ListView.ColumnHeaderCollection에 대한 액세스를 허용하며, 이 컬렉션은 컨트롤의 View 속성이 세부 정보로 설정될 때 표시되는 열 헤더를 저장합니다. 항목 속성을 통해 ListView에서 항목이 추가되고 제거됩니다. Items 속성을 사용하면 컨트롤의 항목을 조작하는 메서드를 제공하는 ListView.ListView항목컨트롤에 액세스할 수 있습니다. 사용자가 항목의 텍스트를 편집하도록 허용하려면 LabelEdit 속성을 사용할 수 있습니다. 컨트롤에 많은 수의 항목이 포함된 경우 사용자가 정렬된 목록에서 항목을 보는 것이 더 쉬운 경우가 많습니다. 정렬 속성을 사용하여 항목을 사전순으로 정렬할 수 있습니다.

ListView 컨트롤의 모양을 완전히 사용자 지정할 수도 있습니다. 이렇게 하려면 OwnerDraw 속성을 true로 설정하고 다음 이벤트 중 하나 이상을 처리합니다: DrawItem, DrawSubItem, DrawColumnHeader. LVN_ITEMCHANGED(-ED)는 일반 및 가상 목록 뷰 모두에 대해 트리거되지만 취소할 수는 없습니다. 그것은 단순히 말하는, «이봐. 이 행이 변경되었으며, 이 행에 대해 할 수 있는 일은 없습니다!» 알림을 조정하고, 데이터를 변경하고, 기본 처리를 건너뛰고, 이벤트를 취소하는 다양한 방법을 시도했지만 아무 것도 안정적으로 작동하지 않았습니다. 이 예제에서는 CanExpandGetter 대리자를 통해 디렉터리만 확장할 수 있습니다. 일반적으로 ObjectListView 는 읽고 정렬하거나 그룹화할 수 있는 모델 개체 목록을 의지에 따라 유지합니다. 가상 개체리스트뷰는 이러한 목록을 유지하지 않습니다. 대신 모델 개체를 표시해야 하는 경우에만 가져옵니다. 큰 목록의 경우 리소스가 크게 줄어듭니다.

사용자가 4백만 번째 행을 전혀 볼 수 없는 경우 VirtualObjectListView는 요청하지 않으므로 프로그램에서 해당 행을 만들 필요가 없습니다. 가상개체리스트뷰를 사용하려면 IVirtualListDataSource를 구현하고 해당 데이터 원본을 가상 목록데이터 소스 속성을 통해 가상 목록에 제공해야 합니다. 이 인터페이스를 사용하면 가상 목록이 본격적인 ObjectListView처럼 작동할 수 있습니다. 가상 목록에서 여전히 수행할 수 없는 유일한 것은 그룹을 표시할 수 없고 타일 보기를 사용할 수 없다는 것입니다. 그러나 그렇지 않으면 정렬, 확인란 및 입력을 통해 검색하는 것을 포함하여 일반 ObjectListView와 동일한 방식으로 작동해야 합니다. 꽤 파고 후, 중요한 설정은 탐색기 옵션 인 것 같다 «드래그하는 동안 창 내용 표시.» «정말 기괴한 부작용»의 예에서 이 옵션이 켜져 있으면 헤더는 HDN_TRACK 메시지 대신 HDN_ITEMCHANGING 메시지를 보냅니다. 그러나 꺼져 있으면 헤더는 많은 HDN_TRACK 메시지와 프로세스의 맨 끝에 하나의 HDN_ITEMCHANGING 메시지만 보냅니다. 이 클래스는 `IComparer` 인터페이스의 구현입니다.

공용 클래스 ListViewItemComparer : IComparer { // 분류 할 열을 지정합니다 개인 int ColumnToSort; // 정렬할 순서를 지정합니다(예: `오름차순`). 개인 정렬 순서 order OrderOfSort; // 대/소문자 구분되지 않은 비교 개체 private CaseInsensitivecomparer 개체비교; 클래스 생성자, 다양한 요소 공개 리스트ViewComparer () { // 열을 `0` ColumnToSort = 0; // 정렬 순서를 `없음` OrderOfSort = SortOrder.None으로 초기화합니다. 개체비교 = 새 CaseInsensitivecomparer(); } // 이 메서드는 IComparer 인터페이스에서 상속됩니다.