Panel 안의 모든 Button 에 같은 이벤트를 적용하는 방법입니다.
우선 각각 버튼에 이벤트를 주는 경우는 아래와 같습니다.
public MainWindow()
{
InitializeComponent();
StackPanel stack = new StackPanel();
Content = stack;
Random rand = new Random();
for (int i = 0; i < 10; i++)
{
Button btn = new Button();
btn.Name = ((char)('A' + i)).ToString();
btn.FontSize += rand.Next(10);
btn.Content = "Button " + btn.Name + " says 'Click me'";
btn.Click += ButtonOnClick;
stack.Children.Add(btn);
}
}
void ButtonOnClick(object sender, RoutedEventArgs args)
{
Button btn = args.Source as Button;
MessageBox.Show("Button " + btn.Name + " has been clicked", "Button Click");
}
AddHandler 와 RoutedEventHandler 를 사용해 아래 처럼 하면 위 처리한 방식과 같은 처리가 가능합니다.
* 모든 버튼의 ClickEvent 를 하나의 이벤트(ButtonOnClick)로 연결시켜줍니다.
public MainWindow()
{
InitializeComponent();
StackPanel stack = new StackPanel();
Content = stack;
Random rand = new Random();
for (int i = 0; i < 10; i++)
{
Button btn = new Button();
btn.Name = ((char)('A' + i)).ToString();
btn.FontSize += rand.Next(10);
btn.Content = "Button " + btn.Name + " says 'Click me'";
stack.Children.Add(btn);
}
stack.AddHandler(Button.ClickEvent, new RoutedEventHandler(ButtonOnClick));
}
void ButtonOnClick(object sender, RoutedEventArgs args)
{
Button btn = args.Source as Button;
MessageBox.Show("Button " + btn.Name + " has been clicked", "Button Click");
}
WPF KeyGesture 사용해 키 이벤트 처리하기 (0) | 2024.07.10 |
---|---|
WPF SetBinding 을 이용해 ListBox 선택에 따른 배경색 변경하기 (0) | 2024.07.10 |
WPF 디스크 사용량 표시하기 (0) | 2024.07.10 |
WPF 프로그램 비정상 종료 막기 (0) | 2024.07.10 |
WPF 프로젝트 내부 이미지 사용하는 방법 (0) | 2024.07.10 |