我必须在WPF中向表单添加未知数量的按钮(它实际上是一个动态加载其元素的工具箱)。我正在寻找一种方法为所有这些实例制作一个事件处理程序。这可能吗?它们不仅仅是按钮,它是一个继承Button类并具有一些其他成员变量的类。我是否能够在每个实例的事件处理程序中访问这些变量。如果它有帮助或以某种方式相关,我不得不说我不知道代表们在C#中是什么。
非常感谢
答案 0 :(得分:6)
您可以将相同的事件处理程序附加到许多事件中。
例如:
var handler = new MyEventHandler(MyMethod);
obj1.MyEvent += handler;
obj2.MyEvent += handler;
obj3.MyEvent += handler;
答案 1 :(得分:3)
我回答自己的问题是多么愚蠢。我这样想:我可以在类本身内为所有实例添加事件处理程序。咄!这是代码:
public class Tool_Button:Button{
public String tool_name;
public Tool_Button(String toolname) {
this.Width = 32;
this.Height = 32;
this.BorderBrush = Brushes.Gray;
tool_name = toolname;
this.Background = new ImageBrush(new BitmapImage(new Uri(tool_name)));
this.Click += new RoutedEventHandler(Tool_Button_Click);
}
void Tool_Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(tool_name);
}
}
答案 2 :(得分:2)
是的,假设方法/属性是公共的,您应该能够访问派生按钮类的自定义属性。事件处理程序的方法签名很可能包括 Handler(object sender, EventArgs e)
,在这种情况下,您可以将发件人转换为派生按钮的类型。
答案 3 :(得分:1)
您可以实现一个类工厂类,以根据需要实例化和配置每个按钮实例(在您的情况下添加事件处理程序关联)。这将允许您在一个位置编写配置代码,并确保每次都使用正确的设置实例化按钮。