2010-02-01 14 views
8

Jak mogę przekazać obsługi zdarzeń TextBlock_MouseDown_Test1 lub TextBlock_MouseDown_Test2 do SmartGrid tak że TextBlocks który tworzy wykona tę procedurę obsługi zdarzenia, gdy są one kliknięty?Jak przekazać procedurę obsługi zdarzeń jako parametr metody?

Poniższy kod pobiera błąd:

The best overloaded method match for 'TestDel234.SmartGrid.SmartGrid(TestDel234.Window1, System.Collections.Generic.List, System.EventHandler)' has some invalid arguments

using System; 
using System.Collections.Generic; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Documents; 
using System.Windows.Input; 

namespace TestDel234 
{ 
    public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 
      List<string> items = new List<string> { "one", "two", "three" }; 
      SmartGrid sg = new SmartGrid(this, items, TextBlock_MouseDown_Test1); 
     } 

     private void TextBlock_MouseDown_Test1(object sender, MouseButtonEventArgs e) 
     { 
      MessageBox.Show("testing1"); 
     } 

     private void TextBlock_MouseDown_Test2(object sender, MouseButtonEventArgs e) 
     { 
      MessageBox.Show("testing2"); 
     } 
    } 

    public class SmartGrid 
    { 
     public SmartGrid(Window1 window, List<string> items, EventHandler eventHandler) 
     { 
      foreach (var item in items) 
      { 
       TextBlock tb = new TextBlock(); 
       tb.Text = item; 
       tb.MouseDown += new MouseButtonEventHandler(eventHandler); 
       window.MainContent.Children.Add(tb); 
      } 
     } 
    } 
} 

Odpowiedz

7

Nie można oddać swój przycisk myszy args obsługi zdarzeń do zwykłego EventHandler - spróbuj EventHandler<MouseButtonEventArgs> w konstruktorze zamiast.

Powiązane problemy