본문 바로가기
C#/Windows Controls

다수의 컨트롤을 하나의 핸들러(메서드)로 처리하기

by edupicker(체르니) 2014. 12. 5.

일반적으로 WinForm이나 XAML에서 하나의 컨트롤에 이벤트가 발생하면 이에 따른 핸들러를 연결하여 이벤트 처리를 하곤 합니다. 그래서 2개의 컨트롤에 Click 이벤트가 발생하면 2개의 2개의 메서드를 정의하여 각 컨트롤의 Click 이벤트에 동작하도록 하는데 오늘은 2개의 컨트롤 이벤트를 하나의 메서드로 처리하는 방법에 대해서 간략히 소개합니다.


<StackPanel Orientation="Horizontal" VerticalAlignment="Top">           

  <Button x:Name="btnOk" Width="100" Height="50" HorizontalAlignment="Left"
              Margin="10" Content="확인" Click="Button_Click"></Button>
  <Button x:Name="btnCancel" Width="100" Height="50"
              HorizontalAlignment="Left"

              Margin="10" Content="취소" Click="Button_Click"></Button>
</StackPanel>


위와 같이 하나의 메서드를 2개의 Button 컨트롤에 연결되도록 하였습니다.
이제 Click_Click 메서드를 볼까요?


private void Button_Click(object sender, RoutedEventArgs e)    

{

  Button _button = (Button)sender;
  if ((string)_button.Content == "확인")
  {
    MessageBox.Show("확인 버튼을 클릭했습니다.");
  }
  else if ((string)_button.Content == "취소")
  {
     MessageBox.Show("취소 버튼을 클릭했습니다.");
  }
}


위와 같이 Click  이벤트가 발생하면 전달되는 sender를 이용하여 해당 컨트롤 객체를
선택하여 이를 이용하여 분기하여 처리할 수 있습니다.
가장 기본적인 하나의 이벤트에 하나의 이벤트 처리 메서드를 적용하는 것이 일반적이지만

상황에 따라서는 위와 같은 방법도 필요할 수 있으니 참고삼아 보시면 될 듯 합니다.

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

ListView II  (0) 2009.05.06
ListView1  (0) 2009.05.05
DateTimePicker 컨트롤  (0) 2009.05.05
ProgressBar  (0) 2009.05.05
SDI 기반으로 여러 폼 핸들링하기  (0) 2009.05.05