c# - 如何访问动态按钮的事件处理程序? Visual Studio 2015 WPF

标签 c# wpf visual-studio visual-studio-2015

我正在尝试再次学习 C#,我想知道实现所需结果的方法是什么,这是我的代码,它会在我单击按钮时创建标签和按钮。

    private void button_Copy_Click(object sender, RoutedEventArgs e)
    {
        counter++;

        Label lbl = new Label();
        lbl.Content = counter.ToString();
        lbl.HorizontalAlignment = HorizontalAlignment.Center;
        lbl.VerticalAlignment = VerticalAlignment.Center;
        lbl.FontSize = 50;

        Button bt = new Button();
        bt.Content = "X";
        bt.HorizontalAlignment = HorizontalAlignment.Right;
        bt.VerticalAlignment = VerticalAlignment.Top;

        grid.Children.Add(lbl);
        grid.Children.Add(bt);
    }

但是,由于点击事件是动态创建的,因此我在确定将点击事件放在哪里时遇到了问题。我想要发生的是当我点击 X 按钮时,它会删除我点击的特定标签和 x 按钮。因此,如果我单击主按钮两次,它将在左上角显示一个带有 x 的 1,在左上角显示一个带有 x 的 2,当我单击 2 的 x 时,它将同时删除带有 2 和 x 的标签2 的按钮。

最佳答案

只需向按钮添加一个事件处理程序:

private void button_Copy_Click(object sender, RoutedEventArgs e)
{
    counter++;

    Label lbl = new Label();
    lbl.Content = counter.ToString();
    lbl.HorizontalAlignment = HorizontalAlignment.Center;
    lbl.VerticalAlignment = VerticalAlignment.Center;
    lbl.FontSize = 50;

    Button bt = new Button();
    bt.Content = "X";
    bt.HorizontalAlignment = HorizontalAlignment.Right;
    bt.VerticalAlignment = VerticalAlignment.Top;

    // add subscriber
    bt.Click += Button_Click;

    grid.Children.Add(lbl);
    grid.Children.Add(bt);
}

// On click event for button
private void Button_Click(object sender, EventArgs e) 
{
    // do whatever when button is clicked

    // this is a reference to the button that was clicked,
    // you can delete it here or do whatever with it
    Button buttonClicked = (Button)sender;
}

现在,当按钮被点击时,“Button_Click”将被触发。

关于c# - 如何访问动态按钮的事件处理程序? Visual Studio 2015 WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35012896/

相关文章:

c# - 在复杂的对象结构中创建类的只读版本

wpf - 将 IGrouping 绑定(bind)到功能区组

c# - 在 Visual Studio 2008 中,有没有一种方法可以找到所有对所有方法都没有引用的引用,而不仅仅是一次找到一个?

c# - 访问具有特定值的 XElement

c# - PostSharp 给出 MissingMethodException

c# - 什么时候执行 Response.Redirect() 而不抛出异常是安全的?

c# - 从一个 View 模型在另一个 View 模型的当前实例中获取属性值

wpf - 无法在对象 'Identity' 上设置属性,因为它处于只读状态

visual-studio - ESLint 支持 Visual Studio 2017

c# - DropDownList,获取C#中返回的DataValueField