단일 이벤트 핸들러로 여러 개의 라디오 버튼 관리하기

2024. 7. 31. 21:27·C#/Window
반응형

Windows Forms 애플리케이션에서 라디오 버튼을 사용할 때, 각각의 라디오 버튼에 별도의 이벤트 핸들러를 작성하는 것은 번거롭고 유지보수가 어려울 수 있습니다. 그러나 단일 이벤트 핸들러를 사용하면 이러한 문제를 쉽게 해결할 수 있습니다.

동일한 이벤트 핸들러 사용하기

라디오 버튼에 대한 공통적인 이벤트 핸들러를 작성하면 코드를 간결하게 유지할 수 있습니다. 이를 위해 다음과 같은 단계를 수행합니다:

  1. 모든 라디오 버튼에 대해 동일한 이벤트 핸들러를 연결합니다.
  2. 이벤트 핸들러 내에서 어떤 라디오 버튼이 선택되었는지 확인합니다.
  3. 선택된 라디오 버튼에 따라 적절한 동작을 수행합니다.
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        // 모든 라디오 버튼에 동일한 이벤트 핸들러 연결
        radioButton1.CheckedChanged += RadioButton_CheckedChanged;
        radioButton2.CheckedChanged += RadioButton_CheckedChanged;
        radioButton3.CheckedChanged += RadioButton_CheckedChanged;
    }

    private void RadioButton_CheckedChanged(object sender)
    {
        // 선택된 라디오 버튼 확인
        RadioButton selectedRadioButton = sender as RadioButton;
        // 선택된 라디오 버튼이 없거나 체크되지 않은 경우 종료
        if (selectedRadioButton == null || !selectedRadioButton.Checked)
            return;

        // 선택된 라디오 버튼에 따라 동작 수행
        switch (selectedRadioButton.Name)
        {
            case "radioButton1":
                // radioButton1이 선택된 경우의 동작
                break;
            case "radioButton2":
                // radioButton2가 선택된 경우의 동작
                break;
            case "radioButton3":
                // radioButton3이 선택된 경우의 동작
                break;
        }
    }
}

이 방법을 사용하면 코드가 더 간결해지고 유지보수가 쉬워집니다. 또한 라디오 버튼이 추가되거나 제거될 때도 쉽게 대응할 수 있습니다.

Tag 속성을 사용한 유연한 관리

라디오 버튼의 이름 대신 Tag 속성을 사용하여 더 유연하게 관리할 수도 있습니다:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        // Tag 속성 설정
        radioButton1.Tag = "Option1";
        radioButton2.Tag = "Option2";
        radioButton3.Tag = "Option3";
        // 모든 라디오 버튼에 동일한 이벤트 핸들러 연결
        radioButton1.CheckedChanged += RadioButton_CheckedChanged;
        radioButton2.CheckedChanged += RadioButton_CheckedChanged;
        radioButton3.CheckedChanged += RadioButton_CheckedChanged;
    }

    private void RadioButton_CheckedChanged(object sender)
    {
        RadioButton selectedRadioButton = sender as RadioButton;
        if (selectedRadioButton == null || !selectedRadioButton.Checked)
            return;
        string selectedOption = selectedRadioButton.Tag as string;
        switch (selectedOption)
        {
            case "Option1":
                // Option1이 선택된 경우의 동작
                break;
            case "Option2":
                // Option2가 선택된 경우의 동작
                break;
            case "Option3":
                // Option3이 선택된 경우의 동작
                break;
        }
    }
}

이 방법을 사용하면 라디오 버튼의 이름을 변경하더라도 코드를 수정할 필요가 없어집니다. 대신 Tag 속성을 통해 각 라디오 버튼을 구분할 수 있습니다.

단일 이벤트 핸들러를 사용하면 코드의 간결성과 유지보수성을 높일 수 있습니다. 또한 Tag 속성을 활용하면 라디오 버튼의 이름 변경에도 쉽게 대응할 수 있습니다. 이와 같은 기법을 통해 Windows Forms 애플리케이션의 개발 효율을 높일 수 있습니다.

저작자표시 비영리 변경금지 (새창열림)

'C# > Window' 카테고리의 다른 글

Windows Forms의 ComboBox에 아이템 추가하는 방법들  (2) 2024.07.29
.NET 프로젝트의 출력 폴더 이름 변경하기  (0) 2024.07.28
Windows Forms PictureBox  (3) 2024.07.24
RichTextBox에 텍스트 추가하고 자동 스크롤하기  (0) 2024.07.23
비동기 프로그래밍에서 Task.Delay의 독립적인 실행  (0) 2024.07.22
'C#/Window' 카테고리의 다른 글
  • Windows Forms의 ComboBox에 아이템 추가하는 방법들
  • .NET 프로젝트의 출력 폴더 이름 변경하기
  • Windows Forms PictureBox
  • RichTextBox에 텍스트 추가하고 자동 스크롤하기
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (724) N
      • 상품 추천 (223) N
      • MongoDB (4)
      • 하드웨어 (16) N
      • 일기장 (4)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • 파이썬 (13)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (41)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    codingtips
    rtsp
    리뷰관리
    cv2
    list
    스크립트 실행
    C#
    learntocode
    appdevelopment
    믈레코비타멸균우유
    상품 리뷰 크롤링
    카페24리뷰이관
    unity
    ipcamera
    codingcommunity
    셀레니움
    유니티
    programming101
    파이썬
    카페24리뷰
    리스트
    Python
    스마트스토어리뷰
    리뷰이관
    devlife
    긴유통기한우유
    스크립트 실행 순서
    programmerlife
    쇼핑몰리뷰
    라떼우유
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
단일 이벤트 핸들러로 여러 개의 라디오 버튼 관리하기
상단으로

티스토리툴바