2

好的,所以我在 winforms 应用程序中向 form1 添加了一个 contextmenustrip。我在其他地方有一个标准类,它将树节点作为参数并对其进行处理。我想做的一件事是设置上下文菜单。上下文菜单是在设计时手动添加到表单中的。

我试过这样的事情:

public static void MethodThatAddsAContextMenu(TreeNode node)
{
    node.ContextMenuStrip = Application.OpenForms[0].Controls["myContextMenu"] as ContextMenuStrip;
}

似乎有一百万个微妙而不是那么微妙的变化。我的代码找不到控件。尽管当我通过监视列表进行深入研究时,上下文菜单实际上并不是表单控件集合的一部分。

任何帮助表示赞赏。我也在我的 iPad 上做了这个,看起来它的格式没问题,但如果不是,请道歉。

提前致谢。

好的,根据您的建议,Boo 发布代码可能更容易:

private static TreeNode CreateSecurityNode(Security Sec)
{
    TreeNode sn = new TreeNode(Sec.SecurityName);
    sn.Tag = Sec;
    sn.ContextMenuStrip = Application.OpenForms[0].Container.Components["securityContext"] as ContextMenuStrip;
}

容器返回null

4

1 回答 1

0

ContextMenuStrip 不会是Form.Controls集合的一部分。它是一个组件,而不是一个控件。

我会尝试使用 TreeNode 传入 ContextMenuStrip。

或者,您可以让您的类构造并在运行时附加上下文菜单。

还-

List<ContextMenuStrip>您可以使用所有上下文菜单(或 a )填充 aDictionary<ContextMenuStrip>并将其作为表单的属性公开:

public List<ContextMenuStrip> contextMenus {get;set;}

// // form load event, possibly
this.contextMenus.Add(myContextMenu);
于 2012-05-24T21:32:43.200 回答