title: How do I pass an event handler as a method parameter?
body: <p>How can I pass the event handler <strong>TextBlock_MouseDown_Test1</strong> or <strong>TextBlock_MouseDown_Test2</strong> to SmartGrid so that the TextBlocks which it creates will execute this event handler when they are clicked?</p>
  
  <p>The code below gets the error: </p>
  
  <blockquote>
    <p>The best overloaded method match for
    'TestDel234.SmartGrid.SmartGrid(TestDel234.Window1,
    System.Collections.Generic.List,
    System.EventHandler)' has some invalid
    arguments</p>
  </blockquote>
  
  <pre><code>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&lt;string&gt; items = new List&lt;string&gt; { "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&lt;string&gt; 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);
              }
          }
      }
  }
  </code></pre>