일반적으로 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 |