首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何向动态创建的ToolStripMenuItem.DropDown项添加单击操作?

如何向动态创建的ToolStripMenuItem.DropDown项添加单击操作?
EN

Stack Overflow用户
提问于 2020-01-27 23:47:57
回答 2查看 576关注 0票数 1

因此,我根据一个文件在favsToolStripMenuItem.DropDown (ToolStripMenuItem)中创建了一些项:

代码语言:javascript
运行
复制
using (StreamReader reader = new StreamReader("text.ini"))
{
  while (true)
  {
    string line = reader.ReadLine();
    if (line== null)
      break;
    favsToolStripMenuItem.DropDown.Items.Add(line);
  }
}

但是如何为它们添加单击事件呢?我想要一个基于项目名称(文本)的单击事件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-27 23:57:43

将单击方法存根:

代码语言:javascript
运行
复制
private void DropDown_Click(object sender, EventArgs e) {
  ToolStripItem tsi = sender as ToolStripItem;
  if (tsi != null) {
    MessageBox.Show(tsi.Text);
  }
}

然后使用包含事件处理程序的Add参数:

代码语言:javascript
运行
复制
favsToolStripMenuItem.DropDown.Items.Add(line, null, DropDown_Click);
票数 0
EN

Stack Overflow用户

发布于 2020-01-28 00:09:03

首先,您需要在创建每个菜单项时分配事件。

代码语言:javascript
运行
复制
using (StreamReader reader = new StreamReader("text.ini"))
{
    while (true)
    {
    string line = reader.ReadLine();
    if (line== null)
        break;

    ToolStripMenuItem menu = new ToolStripMenuItem(line);
    menu.Click += new EventHandler(menu_Click);
    favsToolStripMenuItem.DropDown.Items.Add(menu);
    }
}

现在,每个子菜单项都有自己的事件可在单击时触发。这是如何根据项的名称/文本选择要触发的事件,

代码语言:javascript
运行
复制
void menu_Click(object sender, EventArgs e)
{
    var menuItem = sender as MenuItem; 
    var menuText = menuItem.Text;

    switch(menuText) {
        case "MenuItem1":
           // menu item1 clicked .. do something 
           break;

        case "MenuItem2":
          // menu item2 clicked .. do something 
          break;
         . ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59940510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档