在程序添加菜单项上创建点击事件?

时间:2012-08-20 23:43:51

标签: c# winforms

截图:

enter image description here

我使用下面的代码在屏幕截图中填充了上面的菜单,但是愚蠢的我无法弄清楚如何在每个子项目上创建点击事件,因为它们没有属性名称? :S我的目的是点击,然后说“Do and Do”,然后使用Process.Start(filename);打开文件。请耐心等待,因为我对编程非常陌生。 :|非常感谢你!

private void loadViewTemplates(string path)
{
    foreach (string file in Directory.GetFiles(path, "*.txt"))
    {
        ToolStripItem subItem = new ToolStripMenuItem();
        subItem.Text = Path.GetFileNameWithoutExtension(file);
        viewTemplatesToolStripMenuItem.DropDownItems.Add(subItem);
    }
}

2 个答案:

答案 0 :(得分:9)

尝试删除点击程序。发件人将是被点击的菜单项:

private void MenuClicked(object sender, EventArgs e) {
  MessageBox.Show("Clicked on " + ((ToolStripMenuItem)sender).Text);
}

然后连接每个菜单的点击事件:

ToolStripItem subItem = new ToolStripMenuItem();
subItem.Click += MenuClicked;
subItem.Text = Path.GetFileNameWithoutExtension(file);
viewTemplatesToolStripMenuItem.DropDownItems.Add(subItem);

答案 1 :(得分:2)

我并不真正使用Windows窗体,因此可能有更普遍接受的方法来执行此操作,但您要在此处执行的操作是向“click”事件添加事件处理程序。像这样:

subItem.Click += new EventHandler(subItem_Click);

subItem_Click看起来像这样:

private void subItem_Click(object sender, EventArgs e)
{
    //click logic goes here
}