집 >백엔드 개발 >C#.Net 튜토리얼 >C# ListView 사용법에 대한 자세한 설명
1. ListView 클래스
1. 일반적으로 사용되는 기본 속성:
(1) FullRowSelect: 행 선택 모드 여부를 설정합니다. (기본값은 false입니다.) 팁: 이 속성은 세부정보 보기에서만 의미가 있습니다.
(2) GridLines: 행과 열 사이에 그리드선 표시 여부를 설정합니다. (기본값은 false입니다.) 팁: 이 속성은 세부정보 보기에서만 의미가 있습니다.
(3) AllowColumnReorder: 열 헤더를 드래그하여 열 순서를 변경할 수 있는지 여부를 설정합니다. (기본값은 false입니다.) 팁: 이 속성은 세부정보 보기에서만 의미가 있습니다.
(4) 보기: Details, LargeIcon, List, SmallIcon, Tile을 포함하여 컨트롤에 있는 항목의 표시 모드를 가져오거나 설정합니다(기본값은 LargeIcon)
( 5) MultiSelect: 여러 항목을 선택할 수 있는지 여부를 설정합니다. (기본값은 false)
(6) HeaderStyle: 열 헤더 스타일을 가져오거나 설정합니다.
클릭 가능: 열 헤더는 클릭 시 작업(예: 정렬)을 수행하는 버튼처럼 작동합니다.
NonClickable: 열 헤더가 마우스 클릭에 응답하지 않습니다.
없음: 열 헤더를 표시하지 않습니다.
(7) LabelEdit: 컨트롤 항목의 라벨을 사용자가 편집할 수 있는지 여부를 설정합니다. Detail 뷰의 경우 행의 첫 번째 열 내용만 편집할 수 있습니다. (기본값은 false)
(8) CheckBoxes: 컨트롤의 각 항목 옆에 체크박스를 표시할지 여부를 설정합니다. (기본값은 false)
(9) LargeImageList: 큰 아이콘 세트입니다. 팁: LargeIcon 보기에서만 사용됩니다.
(10) SmallImageList: 작은 아이콘 세트. 팁: SmallIcon 보기에서만 사용됩니다.
(11) StateImageList: 이미지 마스크. 이러한 이미지 마스크는 항목의 애플리케이션 정의 상태를 나타내는 데 사용할 수 있는 LargeImageList 및 SmallImageList 이미지에 대한 오버레이로 사용할 수 있습니다. (아직 이해가 안됨)
(12) SelectedItems : 컨트롤에서 선택된 항목을 가져옵니다.
(13) CheckedItems: 컨트롤의 현재 확인란에 의해 선택된 항목을 가져옵니다.
(14)정렬: 목록 보기의 항목을 정렬합니다. (기본값은 없음)
오름차순: 항목이 오름차순으로 정렬됩니다.
내림차순: 항목이 내림차순으로 정렬됩니다.
없음: 항목이 정렬되지 않습니다.
(15) 스크롤 가능: 모든 항목을 표시할 공간이 부족할 때 스크롤 막대 표시 여부를 설정합니다. (기본값은 true)
(16) HoverSelection: 항목 위에 마우스 포인터를 올렸을 때 자동으로 항목을 선택할지 여부를 설정합니다. (기본값은 false)
(17) HotTracking: 마우스 포인터가 항목 텍스트를 통과할 때 하이퍼링크 형태로 변경되는지 여부를 설정합니다. (기본값은 false)
(18) HideSelection: 컨트롤에 포커스가 없을 때 선택한 항목을 계속 강조 표시할지 여부를 설정합니다. (기본값은 false)
(19) ShowGroups : 항목을 그룹으로 표시할지 여부를 설정합니다. (기본값은 false);
(20) 그룹: 그룹화된 개체 컬렉션을 설정합니다.
(21) TopItem: 위치 지정에 사용할 수 있는 컨트롤에서 첫 번째로 표시되는 항목을 가져오거나 설정합니다. (EnacheVisible 메소드와 효과는 유사)
2. 자주 사용하는 메소드 :
(1) BeginUpdate : EndUpdate 메소드를 호출하기 전에 컨트롤에 대한 설명을 피합니다. 많은 양의 데이터를 삽입할 때 제어 깜박임을 효과적으로 방지하고 속도를 크게 높일 수 있습니다.
(2) EndUpdate: BeginUpdate 메서드가 설명을 일시 중지한 후 목록 보기 컨트롤을 계속 설명합니다. (업데이트 종료)
(3) EnacheVisible: 목록 보기는 지정된 인덱스 항목의 항목 행으로 스크롤합니다. (TopItem 속성과 비슷한 효과)
(4) FindItemWithText: 주어진 텍스트 값으로 시작하는 첫 번째 ListViewItem을 찾습니다.
(5) FindNearestItem: 지정된 검색 방향에 따라 주어진 지점에서 시작하여 다음 항목을 찾습니다. 팁: 이 방법은 LargeIcon 또는 SmallIcon 보기에서만 사용할 수 있습니다.
3. 일반 이벤트:
(1) AfterLabelEdit: 사용자가 항목 라벨 편집을 완료할 때 발생하며 LabelEdit 속성이 true여야 합니다.
(2) BeforeLabelEdit: 사용자가 항목의 라벨 편집을 시작할 때 발생합니다.
(3) ColumnClick: 사용자가 목록 보기 컨트롤에서 열 헤더를 클릭할 때 발생합니다.
2. ListView의 5가지 보기:
1. LargeIcon: 각 항목은 아래에 레이블이 있는 최대화된 아이콘으로 표시됩니다. (효과는 아래 그림 참조)
2. SmallIcon: 각 항목은 오른쪽에 라벨이 붙은 작은 아이콘으로 표시됩니다. (효과는 아래 그림 참조)
3. 목록: 각 항목은 오른쪽에 라벨과 함께 작은 아이콘으로 표시됩니다. 항목은 열 머리글 없이 열로 정렬됩니다. (효과는 아래 그림 참조)
4. 세부사항: 모든 열을 표시할 수 있지만 첫 번째 열에만 작은 아이콘과 레이블을 포함할 수 있으며 다른 열 항목은 텍스트 정보만 표시하고 열을 가질 수 있습니다. 헤더. (효과는 아래 그림 참조)
5. 타일: 각 항목은 전체 크기 아이콘으로 표시되며, 오른쪽에는 항목 라벨과 하위 항목 정보가 표시됩니다. (Windows XP 및 Windows Server 2003 시리즈에서만 지원)
①상세 보기:
this.listView1.SmallImageList = this.imageList1; //listView의 아이콘 세트를 imageList1에 바인딩
>
ColumnHeader ch= new ColumnHeader(); nbsp;ch.Text = "列标题1"; //设置列标题 ch.Width = 120; //设置列宽度 ch.TextAlign = HorizontalAlignment.Left; //设置列的对齐方式 this.listView1.Columns.Add(ch); //将列头添加到ListView控件。( 5) 행 높이 설정(imageList를 사용하여 구현)
ColumnHeader ch= new ColumnHeader(); ch.Text = "列标题1"; //设置列标题 ch.Width = 120; //设置列宽度 ch.TextAlign = HorizontalAlignment.Left; //设置列的对齐方式 this.listView1.Columns.Add(ch); //将列头添加到ListView控件。
this.listView1.Columns.Add("列标题1", 120, HorizontalAlignment.Left); //一步添加(6) 지우기
this.listView1.Columns.Add("列标题1", 120, HorizontalAlignment.Left); //一步添加
this.listView1.BeginUpdate(); //数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度 for (int i = 0; i < 10; i++) //添加10行数据 { ListViewItem lvi = new ListViewItem(); lvi.ImageIndex = i; //通过与imageList绑定,显示imageList中第i项图标 lvi.Text = "subitem" + i; lvi.SubItems.Add("第2列,第"+i+"行"); lvi.SubItems.Add("第3列,第"+i+"行"); this.listView1.Items.Add(lvi); } this.listView1.EndUpdate(); //结束数据处理,UI界面一次性绘制。실행 효과:
this.listView1.BeginUpdate(); //数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度 for (int i = 0; i < 10; i++) //添加10行数据 { ListViewItem lvi = new ListViewItem(); lvi.ImageIndex = i; //通过与imageList绑定,显示imageList中第i项图标 lvi.Text = "subitem" + i; lvi.SubItems.Add("第2列,第"+i+"行"); lvi.SubItems.Add("第3列,第"+i+"行"); this.listView1.Items.Add(lvi); } this.listView1.EndUpdate(); //结束数据处理,UI界面一次性绘制。
foreach (ListViewItem item in this.listView1.Items) { for (int i = 0; i < item.SubItems.Count; i++) { MessageBox.Show(item.SubItems[i].Text); } }
foreach (ListViewItem item in this.listView1.Items) { for (int i = 0; i < item.SubItems.Count; i++) { MessageBox.Show(item.SubItems[i].Text); } }②largeIcon 보기:
foreach (ListViewItem lvi in listView1.SelectedItems) //选中项遍历 { listView1.Items.RemoveAt(lvi.Index); // 按索引移除 //listView1.Items.Remove(lvi); //按项移除 }
foreach (ListViewItem lvi in listView1.SelectedItems) //选中项遍历 { listView1.Items.RemoveAt(lvi.Index); // 按索引移除 //listView1.Items.Remove(lvi); //按项移除 }실행 효과:
ImageList imgList = new ImageList(); imgList.ImageSize = new Size(1, 20);// 设置行高 20 //分别是宽和高 listView1.SmallImageList = imgList; //这里设置listView的SmallImageList ,用imgList将其撑大
ImageList imgList = new ImageList(); imgList.ImageSize = new Size(1, 20);// 设置行高 20 //分别是宽和高 listView1.SmallImageList = imgList; //这里设置listView的SmallImageList ,用imgList将其撑大
③SmallIcon 보기:
this.listView1.Clear(); //从控件中移除所有项和列(包括列表头)。 this.listView1.Items.Clear(); //只移除所有的项。
this.listView1.Clear(); //从控件中移除所有项和列(包括列表头)。 this.listView1.Items.Clear(); //只移除所有的项。
런닝 효과 :
④목록보기 :
this.listView1.View = View.LargeIcon; this.listView1.LargeImageList = this.imageList2; this.listView1.BeginUpdate(); for (int i = 0; i < 10; i++) { ListViewItem lvi = new ListViewItem(); lvi.ImageIndex = i; lvi.Text = "item" + i; this.listView1.Items.Add(lvi); } this.listView1.EndUpdate();
this.listView1.View = View.LargeIcon; this.listView1.LargeImageList = this.imageList2; this.listView1.BeginUpdate(); for (int i = 0; i < 10; i++) { ListViewItem lvi = new ListViewItem(); lvi.ImageIndex = i; lvi.Text = "item" + i; this.listView1.Items.Add(lvi); } this.listView1.EndUpdate();
런닝 효과 :
3. 기타 애플리케이션
this.listView1.View = View.SmallIcon; this.listView1.SmallImageList= this.imageList1; this.listView1.BeginUpdate(); for (int i = 0; i < 10; i++) { ListViewItem lvi = new ListViewItem(); lvi.ImageIndex = i; lvi.Text = "item" + i; this.listView1.Items.Add(lvi); } this.listView1.EndUpdate();
this.listView1.View = View.SmallIcon; this.listView1.SmallImageList= this.imageList1; this.listView1.BeginUpdate(); for (int i = 0; i < 10; i++) { ListViewItem lvi = new ListViewItem(); lvi.ImageIndex = i; lvi.Text = "item" + i; this.listView1.Items.Add(lvi); } this.listView1.EndUpdate();1. 그룹화:
실행 효과:
this.listView1.View = View.List; this.listView1.SmallImageList= this.imageList1; this.listView1.BeginUpdate(); for (int i = 0; i < 10; i++) { ListViewItem lvi = new ListViewItem(); lvi.ImageIndex = i; lvi.Text = "item" + i; this.listView1.Items.Add(lvi); } this.listView1.EndUpdate();
this.listView1.View = View.List; this.listView1.SmallImageList= this.imageList1; this.listView1.BeginUpdate(); for (int i = 0; i < 10; i++) { ListViewItem lvi = new ListViewItem(); lvi.ImageIndex = i; lvi.Text = "item" + i; this.listView1.Items.Add(lvi); } this.listView1.EndUpdate();2. 텍스트 검색(접두사와 일치하는 텍스트만 찾을 수 있으며 첫 번째로 일치하는 항목만 찾을 수 있음):