2010-08-28 69 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

相關問題