在c#运行时添加上下文菜单条

本文关键字:菜单 上下文 添加 运行时 | 更新日期: 2023-09-27 17:51:04

我正在尝试添加一个上下文菜单条到运行时正在创建的按钮。我不是在尝试将新项目添加到先前存在的strip。

Visual Studio给了我一个错误,说索引超出了界限。即使菜单已经在设计器中预付费了,Visual Studio还是说找不到菜单。

添加菜单的代码:
btnOutline.ContextMenuStrip = Utilities.Find<ContextMenuStrip>("projectBtnStrip");

Utilities.Find()代码:

public static T Find<T>(string name)
    {
        return (T)Convert.ChangeType(fm.Controls.Find(name, true)[0], typeof(T));
    }

Find()函数可以处理所有其他类型,只是不能处理这个类型。我甚至创建了一个非通用版本,称为FindMenuStrip,但这不起作用。目标是在运行时添加菜单提示,以便用户可以添加具有此提示的新按钮。什么好主意吗?

在c#运行时添加上下文菜单条

您正在获得该消息,因为contextMenuStrip不是表单的控件集合的一部分,所以它没有找到"控件"。按钮、标签、文本框等都在那个控件集合中,而不是在contextMenuStrip中。你必须把它传递给你的方法,或者使用一个属性来检索它。