C#

(C#) listView 컨트롤 자세히 보기(View.Details) 모드

코딩ABC 2023. 4. 23. 07:01
반응형

C#의 listView(리스트뷰) 컨트롤은 윈도우 탐색기의 보기 모드처럼 여러 가지 모양의 보기 모드를 지원합니다.

여기에서는 자세히 보기 모드를 이용한 간단한 예제를 만들어 보겠습니다.

 

1. 프로젝트를 생성합니다.

  • Windows Forms 앱(.NET Framework)

 

2. 리스트뷰 컨트롤을 1개 폼에 배치하고, Form_Load 이벤트에 다음과 같은 코드를 작성하고 실행합니다.

private void Form1_Load(object sender, EventArgs e)
{
    listView1.View = View.Details;
    listView1.GridLines = true;
    listView1.FullRowSelect = true;

    listView1.Columns.Add("순서", 50, HorizontalAlignment.Center);
    listView1.Columns.Add("학번", 70, HorizontalAlignment.Center);
    listView1.Columns.Add("이름", 70, HorizontalAlignment.Center);
    listView1.Columns.Add("전화", 150, HorizontalAlignment.Center);
}

C#, listView 컨트롤


3. 화면을 다음과 같이 디자인합니다.

C#, listView 컨트롤

 

속성을 다음과 같이 변경합니다.

버튼 이름: btnAdd, btnDelete 

 

 

[저장] 버튼에 코드를 작성합니다.

        int n=0;   // 전역변수(필드) 위치에 선언합니다.
        
        
        private void btnAdd_Click(object sender, EventArgs e)
        {
            n++;
            ListViewItem item = new ListViewItem(n.ToString());
            item.SubItems.Add(textBox1.Text);
            item.SubItems.Add(textBox2.Text);
            item.SubItems.Add(textBox3.Text);
            listView1.Items.Add(item);
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            textBox1.Focus();
        }


리스트뷰의 "SelectedIndexChanged" 이벤트에 코드를 작성합니다.

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                textBox1.Text = listView1.FocusedItem.SubItems[1].Text;
                textBox2.Text = listView1.FocusedItem.SubItems[2].Text;
                textBox3.Text = listView1.FocusedItem.SubItems[3].Text;
            }
            catch { }
        }

 

[삭제] 버튼에 코드를 작성합니다.

        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedIndices.Count > 0)
            {
                for(int i= listView1.SelectedIndices.Count-1; i>=0; i--)
                    listView1.Items.RemoveAt(listView1.SelectedIndices[i]);
            }
            else
                MessageBox.Show("삭제할 항목을 선택해주세요.");
        }

 

[Update] 버튼에 코드를 작성합니다.

        private void button1_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                int n = listView1.SelectedItems[0].Index;
                listView1.Items[n].SubItems[1].Text = textBox1.Text;
                listView1.Items[n].SubItems[2].Text = textBox2.Text;
                listView1.Items[n].SubItems[3].Text = textBox3.Text;
            }
        }

 

 

실행 결과

리C#, listView 컨트롤

 

리스트뷰: Update

 

 

추가, 삭제, 변경(update) 모두 잘 실행됩니다.

반응형