许多按钮的单击事件

时间:2016-12-10 22:59:08

标签: c# wpf

我有一个带有许多按钮的WPF窗口(btn_1,btn_2,btn_3 ... btn_81),而是为每个按钮创建一个点击事件,如下所示:

private void btn_1_Click(object sender, RoutedEventArgs e)
{
    if (backColor != null)
        btn_1.Background = backColor;
}

private void btn_2_Click(object sender, RoutedEventArgs e)
{
    if (backColor != null)
        btn_2.Background = backColor;
}

我的意思是只创建一个click事件,并以某种方式获取我单击以执行操作的按钮的名称。使用click事件执行的操作对于每个按钮都是相同的:它们必须更改其背景。

我希望我能解释一下我的问题。 TIA!

3 个答案:

答案 0 :(得分:5)

在您的XAML中,您可以将按钮单击事件绑定到同一个处理程序:

    <StackPanel>
        <Button Content="btn1" x:Name="btn1" Click="btn_Click"></Button>
        <Button Content="btn2" x:Name="btn2" Click="btn_Click"></Button>
        <Button Content="btn3" x:Name="btn3" Click="btn_Click"></Button>
    </StackPanel>

背后的代码:

    Brush backColor = new SolidColorBrush(Colors.Red);

    private void btn_Click(object sender, RoutedEventArgs e)
    {
        Button btn = sender as Button;

        if (btn != null && backColor != null)
            btn.Background = backColor;
    }

答案 1 :(得分:4)

只需为每个按钮添加相同的事件即可。在您的情况下,添加btn_1_Click。你可以这样做:

btn1.Click += btn1_Click;
btn2.Click += btn1_Click;
btn3.Click += btn1_Click;
...

btn1.Click += new EventHandler(btn1_Click);
btn2.Click += new EventHandler(btn1_Click);
btn3.Click += new EventHandler(btn1_Click);
...


private void btn1_Click(object sender, RoutedEventArgs e)
{
    // do something
}

答案 2 :(得分:0)

你可以做到

   private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
    {
        if (Equals(sender, bt1))
        {

        }
        else if(Equals(sender, bt2))
        {

        }
    }

<强> XAML

<Button Content="Button 1" Name="bt1" Click="ButtonBase_OnClick"/>
<Button Content="Button 2" Name="bt2" Click="ButtonBase_OnClick"/>