【问题标题】:Creating Click Events on Programmatically Added Menu Items?在以编程方式添加的菜单项上创建点击事件?
【发布时间】:2014-12-16 23:09:34
【问题描述】:

截图:

我使用下面的代码在屏幕截图中填充了上面的菜单,但我很傻,我不知道如何在每个子项上创建点击事件,因为它们没有属性名称? :S 我的意图是单击,比如说,“做和做”,然后文件将使用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);
    }
}

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

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

    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);
    

    【讨论】:

      【解决方案2】:

      我并没有真正做 windows 窗体,所以可能有一个更普遍接受的方式来做到这一点,但你想要做的是添加一个事件处理程序到 "click" 事件。像这样:

      subItem.Click += new EventHandler(subItem_Click);
      

      subItem_Click 看起来像这样:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-02
        • 1970-01-01
        • 1970-01-01
        • 2012-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多