我正在尝试再次学习 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/