Tag 속성을 이용하여 RadioButton 사용 코딩 줄이기 #1 - C#

Software/C#|2023. 4. 25. 16:26
반응형

C++ 빌더 툴을 사용하다가 C#으로 전환하면서 하나 불편한 부분이 바로 RadioButton 이었습니다. 

빌더 툴에서 RadioGroup 라는 컴포넌트가 있어서 RadioGroup 의 Index 속성을 이용하여 코딩을 줄일 수가 있었는데 C#에는 그와 같은 컴포넌트가 없어서 너무 불편했습니다. 

 

아래 그림처럼 RadioButton 을 만들었을 경우 

일반적으로는 아래의 코드처럼 각각의 메뉴에 이벤트를 만들어 사용하게 됩니다. 

public partial class Form1 : Form
{
   enum Meat{등심,안심,갈비}

   private Meat _selectedMeat;

   public Form1()
   {
      InitializeComponent();
   }
   private void radioButton1_Click(object sender, EventArgs e)
   {
      this._selectedMeat = Meat.등심;
      DisplayMenu();
   }
   private void radioButton2_Click(object sender, EventArgs e)
   {
      this._selectedMeat = Meat.안심;
      DisplayMenu();
   }
   private void radioButton3_Click(object sender, EventArgs e)
   {
      this._selectedMeat = Meat.갈비;
      DisplayMenu();
   }
   private void DisplayMenu()
   {
      lblMsg.Text = string.Format("{0} 메뉴를 선택하셨습니다.", this._selectedMeat.ToString());
   }
}

 

위의 코드를 Tag 속성을 이용해서 간단하게 줄여 보겠습니다. 

먼저 메뉴 항목의 각 RadioButton Tag 속성을  (등심:0, 안심:1, 갈비:2) 로 설정합니다. 

그리고 3개의 RadioButton Click이벤트를 각각 만들지 말고 하나의 동일한 이벤트 함수를 만들어 공유 합니다. 

코드는 아래와 같습니다. 

 

public partial class Form1 : Form
{
    string[] Meat = { "등심", "안심", "갈비" };

    public Form1()
    {
        InitializeComponent();
    }

    private void RadioButton_Click(object sender, EventArgs e)
    {
        var select = int.Parse( (sender as RadioButton).Tag.ToString() );
        lblMsg.Text = string.Format("{0} 메뉴를 선택하셨습니다.", Meat[select]);
    }
}

4개의 함수가 하나의 함수로 줄어들고 코드도 2줄로 확 줄었습니다. 

이렇게 Tag를 이용하면 차후에 Switch 구문을 사용하여 코딩하기도 굉장히 쉽습이다. 

반응형

댓글()