본문 바로가기

IT프로그래밍

[C#]리스트 박스 값 가져오기(전체, 선택된 아이템)

저번 시간에는 리스트 박스에 값을 넣는 것과 삭제시키는 것에 대해 포스팅하였습니다.

 

이번 포스팅에서는 리스트 박스에 있는 값을 가져 오는 방법에 대해 포스팅 하겠습니다.

 

저번에 리스트 박스 삭제 예제로 만들었던(Remove, Removeat, Clear)프로젝트에서 이어서 개발하도록 하겠습니다.

 

리스트 박스에 있는 아이템을 가져오는 방법에는 2가지가 있습니다.

 

1. 리스트 박스에 있는 모든 아이템을 가져오는 방법

2. 리스트 박스에서 선택된(클릭된) 아이템명을 가져오는 방법

3. 리스트 박스에서 선택된(클릭된) 아이템의 인덱스를 가져오는 방법

이 세가지에 대한 포스팅입니다.

 

 

1. 리스트 박스에 있는 모든 아이템 값 가져오기


우선 리스트 박스에 있는 모든 값을 foreach문을 사용하여 string에 저장하고

저장된 값을 다시 textbox에 삽입하는 예제입니다.

 

폼디자인

빨간색으로 구분해놓은 곳이 추가한 부분입니다.

 

소스 코드

/// <summary>
/// 리스트 박스에 있는 모든 아이템을 반환 시키는 펑션
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{
    string result = "";
    foreach(var input_items in listBox1.Items)
    {
        result += string.Format("{0} ", input_items);
    }
    textBox3.Text = result;
            
}

button4가 클릭 되었을 경우 호출되는 코드 입니다.

우선 리스트 박스 아이템들의 값을 저장시킬 string형 변수 result를 선언하고 ""로 초기화하였습니다.

그 후 foreach문을 통해 listBox1에 저장된 모든 Items들의 값을 

input_items에 할당하고, result += string.format("{0} ", input_items)를 통해서

값 한칸공백 값 한칸공백 식으로 저장하였습니다.

foreach문을 모두 돈 후 결과값을 textBox3에 출력시켰습니다.

 

실행 결과

다음과 같이 리스트 박스에 있는 모든 값들이 텍스트 박스에 삽입된 것을 확인 할 수 있습니다.


 

 

 

2. 선택된 리스트 박스 아이템명을 가져오는 방법


 

폼디자인

소스코드

/// <summary>
/// 선택된 아이템명을 가져오는 방법
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button5_Click(object sender, EventArgs e)
{
    if (listBox1.SelectedItem != null)
    {
        textBox4.Text = listBox1.SelectedItem.ToString();
    }
}

리스트 아이템 중 선택된 아이템(SelectedItem)을

.ToString()을 사용하여 string으로 캐스팅 후, 텍스트 박스에 삽입한 예제입니다.

if(listBox1.SelectedItem != null) 을 통해 선택되지 않았을 경우

예외처리를 하여 에러가 발생하지 않게 하였습니다

(null을 .Tostring할 경우 에러가 발생됩니다)

 

실행 결과

리스트 박스에 아이템을 클릭한 후 button5를 누르면 선택된 값이 텍스트 박스에 삽입되는 것을 볼 수 있습니다.


 

 

 

3. 선택된 리스트 박스 인덱스를 통해 아이템명을 가져오는 방법


 

폼디자인

리스트 박스에서 아이템을 선택한 후 button6을 클릭하면 

선택된 아이템의 인덱스를 구하고

그 인덱스를 갖고 리스트 박스의 해당 인덱스 번호의 아이템명을 구해보겠습니다.

 

소스 코드

/// <summary>
/// 선택된 아이템의 인덱스를 통해 아이템명을 가져오는 방법
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button6_Click(object sender, EventArgs e)
{
    if (listBox1.SelectedItem != null)
    {
        int Selected_index = listBox1.SelectedIndex;
        textBox5.Text = Selected_index.ToString();
        textBox6.Text = listBox1.Items[Selected_index].ToString();
    }
}

2번과 같은 예외처리를 하였으며

클릭된(선택된) 아이템의 인덱스를 할당 받습니다.

그 인덱스를 통해 리스트박스[인덱스값]을 통해 해당 아이템명을 구하여 

각각 텍스트 박스에 표출합니다.

 

실행 결과

0번부터 시작이기때문에 선택된 짜파게티의 인덱스 번호는 4

해당 인덱스 번호로 구한 아이템명은 짜파게티로 모두 잘 표출된 것을 확인 할 수 있습니다.


 

전체 소스 코드 첨부하며 이번 포스팅을 마무리 합니다.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

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

        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Remove(textBox1.Text);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            listBox1.Items.RemoveAt(Convert.ToInt32(textBox2.Text));
        }

        private void button3_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
        }

        /// <summary>
        /// 리스트 박스에 있는 모든 아이템을 반환 시키는 펑션
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            string result = "";
            foreach(var input_items in listBox1.Items)
            {
                result += string.Format("{0} ", input_items);
            }
            textBox3.Text = result;
            
        }

        /// <summary>
        /// 선택된 아이템명을 가져오는 방법
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button5_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItem != null)
            {
                textBox4.Text = listBox1.SelectedItem.ToString();
            }
        }


        /// <summary>
        /// 선택된 아이템의 인덱스를 통해 아이템명을 가져오는 방법
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button6_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItem != null)
            {
                int Selected_index = listBox1.SelectedIndex;
                textBox5.Text = Selected_index.ToString();
                textBox6.Text = listBox1.Items[Selected_index].ToString();
            }
        }

    }
}