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

Add context menu strip during runtime in C#

我正在尝试向运行时创建的按钮添加上下文菜单条。我没有尝试将新项目添加到预先存在的片段中。

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,但它不起作用。目标是在运行时添加一个菜单条,以便用户可以添加具有此条的新按钮。有什么想法吗?

您收到该消息是因为 contextMenuStrip 不是表单控件集合的一部分,所以它找不到 "control"。按钮、标签、文本框等位于该控件集合中,而不是 contextMenuStrip。您必须将它传递给您的方法,或者使用 属性 来检索它。