1

我正在生成许多具有相似或相同内容的按钮,并希望使用它们的名称来区分它们。由于程序正在动态创建按钮,因此我无法为所有按钮创建单独的事件,而是需要能够获取名称才能知道哪个按钮触发了事件。

有没有办法将按钮的名称传递给它启动的点击事件?发件人对象似乎包含内容但不包含名称。

这是为了这样的事件:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        //getname of button
        Canvas.Children.Remove(//name of button\\)
    }
4

3 回答 3

6

据我所知,WPF 甚至不会Name自动为该属性分配任何东西——这只是供开发人员分配,以便我们可以引用控件。

但是,您应该能够只将 sender 传递给 remove 方法,因为它接受 Button 派生自的 UIElement 参数。

Canvas.Children.Remove((Button)sender);
于 2013-08-05T00:54:04.427 回答
5

我不熟悉WPF。如果这个答案似乎是垃圾,我会删除它。

在 ASP.Net 中,我们可以强制转换为一个按钮来获取发送者的信息。像这样的东西-

private void Button_Click(object sender, RoutedEventArgs e)
{
    var button = sender as Button;
    button.Name
}
于 2013-08-05T00:53:40.093 回答
0

也许获取控件的名称对您有用

private void button1_Click(object sender, RoutedEventArgs e)
{
  Control control = (Control)sender;
  Canvas.Children.Remove(control.Name);
}
于 2013-08-05T03:06:10.567 回答