C# dynamically add event handler

Tony picture Tony · Oct 7, 2009 · Viewed 73.8k times · Source

Hi i have a simple question. here is my code:

        XmlDocument xmlData = new XmlDocument();
        xmlData.Load("xml.xml");

        /* Load announcements first */
        XmlNodeList announcements = xmlData.GetElementsByTagName("announcement");

        for (int i = 0; i < announcements.Count; i++)
        {
            ToolStripMenuItem item = new ToolStripMenuItem();

            item.Name = announcements[i].FirstChild.InnerText;
            item.Text = announcements[i].FirstChild.InnerText;

            /* HERE IS WERE I NEED HELP */

            item.Click += new EventHandler();

            this.freedomMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { item });
        }

The xml LastChild holds information for each annoucement. I would like to create a click event handler where when teh list item is clicked, a message box shows up with the data inside it. My problem is i dont no how to dynamically generate event handlers to do this :(

Answer

TheVillageIdiot picture TheVillageIdiot · Oct 7, 2009

try:

 /* HERE IS WERE I NEED HELP */

 item.Click += new EventHandler(toolStripClick);

actual handler:

void toolStripClick(object sender, EventArgs e)
{
     ToolStripItem item = (ToolStripItem)sender;
     MessageBox.Show(item.Text);
}