我必须添加未知数量的按钮到WPF中的窗体(它实际上是一个工具箱,其元素被动态加载)。我正在寻找一种方法来为所有这些实例创建一个事件处理程序。这可能吗?它们不完全只是按钮,它是继承Button类和其他一些成员变量的类。我能否在每个实例的这种事件处理程序中访问这些变量。如果它有帮助或者有某种相关性,我不得不说我不知道C#中的代表是什么。C# - 为类的所有实例添加事件处理程序
很多谢谢
我必须添加未知数量的按钮到WPF中的窗体(它实际上是一个工具箱,其元素被动态加载)。我正在寻找一种方法来为所有这些实例创建一个事件处理程序。这可能吗?它们不完全只是按钮,它是继承Button类和其他一些成员变量的类。我能否在每个实例的这种事件处理程序中访问这些变量。如果它有帮助或者有某种相关性,我不得不说我不知道C#中的代表是什么。C# - 为类的所有实例添加事件处理程序
很多谢谢
我是多么愚蠢的回答自己的问题。我想到了这样的情况:我可以在类中为所有实例添加事件处理程序。咄!这里是代码:
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);
}
}
您可以将同一事件处理程序附加到许多事件。
例如:
var handler = new MyEventHandler(MyMethod);
obj1.MyEvent += handler;
obj2.MyEvent += handler;
obj3.MyEvent += handler;
你可以实现一个类工厂类都实例化和配置每个按钮实例(在你的情况下添加事件处理协会),你需要他们。这将允许您在一个地方编写配置代码,并确保每次都按照正确的设置实例化按钮。
是的,你应该能够访问派生按钮类的自定义属性,假设方法/属性是公共的。事件处理程序的方法签名很可能包括Handler(object sender, EventArgs e)
,在这种情况下,您可以将发件人转换为派生按钮的类型。
谢谢。我需要这个。 – Auxiliary 2010-08-28 19:51:09
或者你可以重写'OnClick'。 – 2016-06-27 15:54:56