[C# 윈폼] GroupBox 컨트롤 안에 있는 Controls foreach Reverse(역순)으로 가져오는 방법

안녕하세요.

 

오늘은 C# 윈폼에서 GroupBox 컨트롤 안에 배치되어 있는 컨트롤들을 foreach 문에서 역순으로 출력하는 방법에 대해서 알려 드리려고 합니다.

 

제가 예제로 만들 코드는, 임의로 GroupBox 컨트롤 하나를 배치한 후, 해당 GroupBoxCheckBox 컨트롤 5개를 배치한 후에 해당 CheckBox 컨트롤들을 List로 뽑아와서 역순으로 정렬 후 foreachDictionary 컬렉션에 저장시켜 보도록 하겠습니다.

 

컨트롤 배치

먼저 위와 같이 빈 윈폼 프로젝트를 생성한 후에 GroupBox 컨트롤과 CheckBox 컨트롤을 배치해 주시기 바랍니다.

 

참고로, 저는 CheckBox1, CheckBox4 컨트롤은 Checked 속성을 true로 설정해 주었습니다.

 

그리고 아래와 같이 소스 코드를 작성해 주시기 바랍니다.

 

예제 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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 GroupBoxTest
{
    public partial class Form1 : Form
    {
        Dictionary<stringstring> rItemDic = new Dictionary<stringstring>();
 
        public Form1()
        {
            InitializeComponent();
 
            this.Load += FormLoad_Event;
        }
 
        /// <summary>
        /// Form Load Event Handler
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FormLoad_Event(object sender, EventArgs e)
        {
            ControlsIterator();
 
            foreach (var item in rItemDic)
            {
                MessageBox.Show($"현재 체크되어 있는 CheckBox 컨트롤은 {item.Value} 입니다.");
            }
        }
 
        /// <summary>
        /// 컨트롤 역순으로 반복해주는 메서드
        /// </summary>
        private void ControlsIterator()
        {
            //Dictionary 초기화
            this.rItemDic.Clear();
 
            //GroupBox 내의 CheckBox 컨트롤 List로 가져오기
            List<CheckBox> checkBoxList = uiGb_Main.Controls.Cast<CheckBox>().ToList();
 
            //리스트 역순으로 정렬
            checkBoxList.Reverse();
 
            //리스트 반복 진행
            foreach (var cb in checkBoxList)
            {
                if (cb.Checked)
                {
                    this.rItemDic.Add(cb.Text, cb.Text);
                }
            }
        }
    }
}
 
cs
실행 결과

위와 같이 현재 GroupBox 컨트롤 내에서 총 5개의 CheckBox 컨트롤이 있는데, 여기서 현재 Check 되어 있는 CheckBox 리스트만 알맞게 메시지박스로 사용자에게 보여주는 것을 확인할 수 있습니다.

 

감사합니다.^^

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY