ListBox 사용하기 [WinForm with C#]

안녕하세요. 언제나 휴일에 언휴예요.

이번 강의는 ListBox 사용하기입니다.

LixtBox는 항목을 추가하여 보여주고 선택, 삭제 등의 기능을 제공하는 컨트롤입니다.

이번 강의에서 ListBox에 항목을 추가하고 삭제하고 항목 선택이 바뀌는 것을 인지하고 선택 항목이 무엇인지 확인하는 프로그램 제작 실습입니다.

1. 컨트롤 배치
2. 이벤트 핸들러 등록 및 코드 작성
3. Form1.cs 소스 코드
리스트 박스
그림 1. 프로그램 시연 모습

1. 컨트롤 배치하기

컨트롤 배치
그림 2. 컨트롤 배치

그림 2. 처럼 컨트롤을 배치하고 컨트롤 이름을 변경하세요.

삭제 버튼의 Enabled 속성은 False로 지정하세요.

디자인 편집 창에서 ListBox 컨트롤의 우측 상단에 화살표를 클릭하면 항목 편집 링크가 나옵니다. 이를 클릭하여 항목을 추가하면 ListBox 생성 시 초기 항목을 지정할 수 있어요.

항목 추가하기
그림 3. 항목 편집

2. 이벤트 핸들러 등록 및 코드 구현

btn_add의 Click 이벤트 핸들러를 등록하세요.

이벤트 핸들러에서는 tbox_name의 Text 속성을 lbox_name의 항목 컬렉션에 추가합니다.

        private void btn_add_Click(object sender, EventArgs e)
        {
            lbox_name.Items.Add(tbox_name.Text);
            tbox_name.Text = "";
        }

btn_remove 의 Click 이벤트 핸들러도 등록하세요.

lbox_name의 선택 항목을 제거합니다. 선택 항목은 SelectedItem 속성으로 접근할 수 있어요.

        private void btn_remove_Click(object sender, EventArgs e)
        {
            lbox_name.Items.Remove(lbox_name.SelectedItem);
        }

마지막으로 lbox_name의 SelectedIndexChanged 이벤트 핸들러를 등록하세요.

선택 항목이 있는지 판별할 때 SelectedIndex 값이 -1인지 비교합니다.

선택 항목이 없다면 btn_remove를 false로 지정하여 비활성화 시킵니다.

선택 항목이 있다면 btn_remove를 true로 지정하여 활성화 시킵니다.

그리고 선택 항목 내용으로 lb_name의 Text 속성을 지정합니다.

        private void lbox_name_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(lbox_name.SelectedIndex==-1)
            {
                btn_remove.Enabled = false;
                lb_name.Text = "선택 항목이 없습니다.";
                return;
            }
            btn_remove.Enabled = true;
            lb_name.Text = lbox_name.SelectedItem.ToString();
        }

이상으로 실습을 마쳤습니다.

3. Form1.cs 소스 코드

다음은 Form1.cs의 전체 소스 코드입니다.

using System;
using System.Windows.Forms;

namespace ListBox_사용하기
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btn_add_Click(object sender, EventArgs e)
        {
            lbox_name.Items.Add(tbox_name.Text);
            tbox_name.Text = "";
        }

        private void btn_remove_Click(object sender, EventArgs e)
        {
            lbox_name.Items.Remove(lbox_name.SelectedItem);
        }

        private void lbox_name_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(lbox_name.SelectedIndex==-1)
            {
                btn_remove.Enabled = false;
                lb_name.Text = "선택 항목이 없습니다.";
                return;
            }
            btn_remove.Enabled = true;
            lb_name.Text = lbox_name.SelectedItem.ToString();
        }
    }
}