2010-08-28 34 views
3

我必须添加未知数量的按钮到WPF中的窗体(它实际上是一个工具箱,其元素被动态加载)。我正在寻找一种方法来为所有这些实例创建一个事件处理程序。这可能吗?它们不完全只是按钮,它是继承Button类和其他一些成员变量的类。我能否在每个实例的这种事件处理程序中访问这些变量。如果它有帮助或者有某种相关性,我不得不说我不知道​​C#中的代表是什么。C# - 为类的所有实例添加事件处理程序

很多谢谢

回答

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); 
     } 

    } 
+0

或者你可以重写'OnClick'。 – 2016-06-27 15:54:56

5

您可以将同一事件处理程序附加到许多事件。

例如:

var handler = new MyEventHandler(MyMethod); 
obj1.MyEvent += handler; 
obj2.MyEvent += handler; 
obj3.MyEvent += handler; 
1

你可以实现一个类工厂类都实例化和配置每个按钮实例(在你的情况下添加事件处理协会),你需要他们。这将允许您在一个地方编写配置代码,并确保每次都按照正确的设置实例化按钮。

2

是的,你应该能够访问派生按钮类的自定义属性,假设方法/属性是公共的。事件处理程序的方法签名很可能包括Handler(object sender, EventArgs e),在这种情况下,您可以将发件人转换为派生按钮的类型。

+0

谢谢。我需要这个。 – Auxiliary 2010-08-28 19:51:09

相关问题