Come posso passare il gestore di eventi TextBlock_MouseDown_Test1 o TextBlock_MouseDown_Test2 per SmartGrid in modo che le TextBlocks che essa crea eseguirà questo gestore di eventi quando si fa clic?Come si passa un gestore di eventi come parametro del metodo?
Il codice di seguito ottiene l'errore:
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);
}
}
}
}