You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取动态生成的ContextMenuStrip点击项的文本?

获取动态生成ContextMenuStrip菜单项的点击文本

你的代码存在两处问题:

  • 重复声明变量a_item,导致第一个添加的"A CONTEXT"项未绑定点击事件,还会被第二个项覆盖
  • 点击事件里错误引用了不存在的a_item_Click.text属性

直接修改代码即可实现需求:

修正后的完整代码

private void updateContext()
{
    a_context_menu.Items.Clear();

    foreach (var a_device in a_devices)
    {
        // 分别创建两个菜单项,各自绑定点击事件
        var itemA = a_context_menu.Items.Add("A CONTEXT");
        itemA.Click += a_item_Click;

        var itemB = a_context_menu.Items.Add("B CONTEXT");
        itemB.Click += a_item_Click;
    }
}

private void a_item_Click(object sender, EventArgs e)
{
    // 将sender转换为菜单项基类,获取点击项的文本
    if (sender is ToolStripItem clickedItem)
    {
        MessageBox.Show(clickedItem.Text);
    }
}

关键说明

  • 每个菜单项需单独实例化并绑定事件,不能复用同一个变量,否则只有最后一个项会触发事件
  • 点击事件的sender参数就是被点击的菜单项本身,将其转换为ToolStripItem(ContextMenuStrip所有项的基类)后,即可直接读取Text属性
  • 用is运算符做类型检查,能避免类型转换失败引发异常

内容的提问来源于stack exchange,提问作者Air con kun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 14:50:32