Home Full Site
ListView 컨트롤

ListView 컨트롤은 파일 탐색기의 디렉토리 내 파일들처럼 아이템들을 여러 리스트 형태로 보여주는 컨트롤이다. 리스트 형태를 지정하는 View 프로퍼티는 Details, List, Tile, LargeIcon, SmallIcon 등 5가지가 있다.


ListView 컨트롤


ListView 컨트롤 사용

ListView 컨트롤을 다른 컨트롤에 비해 조금 복잡한 면이 있는데, 많은 아이템들을 추가하기 위해서는 일시적으로 UI 갱신을 중지하고(BeginUpdate메서드 사용) 모든 아이템들이 Items 컬렉션에 추가된 후에 UI 중지를 풀어주는(EndUpdate 사용) 방식을 택한다. 실제 아이템 데이타는 ListItemView객체들을 Items라는 컬렉션에 추가하면 되는데, ListItemView객체에 메인 아이템 및 상세자료인 서브아이템들을 넣을 수 있다. 아이템들의 앞에 아이콘을 보여 주기 위해서는 LargeImageList 혹은 SmallImageList 속성에 ImageList를 추가하면 된다. 또한 Columns 속성은 컬럼 헤더명 및 사이즈 등의 정보를 추가한다.

예제

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        //현재 디렉토리 내의 파일리스트 얻기
        string currDir = Environment.CurrentDirectory;
        DirectoryInfo di = new DirectoryInfo(currDir);
        FileInfo[] files = di.GetFiles();

        // 리스트뷰 아이템을 업데이트 하기 시작.
        // 업데이트가 끝날 때까지 UI 갱신 중지.
        listView1.BeginUpdate();
        
        // 뷰모드 지정
        listView1.View = View.Details;

        // 아이콘을 위해 이미지 지정
        listView1.LargeImageList = imageList1;
        listView1.SmallImageList = imageList2;

        foreach (var fi in files)
        {
        // 각 파일별로 ListViewItem객체를 하나씩 만듦
        // 파일명, 사이즈, 날짜 정보를 추가
        ListViewItem lvi = new ListViewItem(fi.Name);
        lvi.SubItems.Add(fi.Length.ToString());
        lvi.SubItems.Add(fi.LastWriteTime.ToString());
        lvi.ImageIndex = 0;

        // ListViewItem객체를 Items 속성에 추가
        listView1.Items.Add(lvi);
        }

        // 컬럼명과 컬럼사이즈 지정
        listView1.Columns.Add("파일명", 200, HorizontalAlignment.Left);
        listView1.Columns.Add("사이즈", 70, HorizontalAlignment.Left);
        listView1.Columns.Add("날짜", 150, HorizontalAlignment.Left);

        // 리스뷰를 Refresh하여 보여줌
        listView1.EndUpdate();
    }

    // View모드를 지정
    private void radioDetails_CheckedChanged(object sender, EventArgs e)
    {
        listView1.View = View.Details;
    }

    private void radioList_CheckedChanged(object sender, EventArgs e)
    {
        listView1.View = View.List;
    }

    private void radioTile_CheckedChanged(object sender, EventArgs e)
    {
        listView1.View = View.Tile;
    }
    //LargeIcon/SmallIcon 이벤트 핸들러 생략
}



© csharpstudy.com