好的,所以我在winforms应用程序中向form1添加了一个contextmenustrip。我在其他地方有一个标准类,它使用treenode作为参数并对它执行操作。我想做的一件事是设置上下文菜单。上下文菜单是在设计时手动添加到表单的。
我已经尝试过类似的事情:
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
。 最佳答案
ContextMenuStrip将不属于Form.Controls
集合。它是一个组件,而不是控件。
我会尝试通过TreeNode传递ContextMenuStrip。
另外,您可以构造类并在运行时附加上下文菜单。
也-
您可以使用所有上下文菜单(或List<ContextMenuStrip>
)填充Dictionary<ContextMenuStrip>
并将其显示为以下形式的属性:
public List<ContextMenuStrip> contextMenus {get;set;}
// // form load event, possibly
this.contextMenus.Add(myContextMenu);