好的,所以我在 winforms 应用程序中向 form1 添加了一个上下文菜单条。我在其他地方有一个标准类,它以树节点为参数并对其执行操作。我想做的一件事是设置上下文菜单。上下文菜单是在设计时手动添加到表单中的。
我试过这样的事情:
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
的一部分收藏。它是一个组件,而不是一个控件。
我会尝试将 ContextMenuStrip 与 TreeNode 一起传递。
或者,您可以让您的类在运行时构造并附加上下文菜单。
还有-
您可以填充 List<ContextMenuStrip>
使用所有上下文菜单(或 Dictionary<ContextMenuStrip>
)并将其公开为表单的属性:
public List<ContextMenuStrip> contextMenus {get;set;}
// // form load event, possibly
this.contextMenus.Add(myContextMenu);
关于c# - 尝试从自定义类以编程方式添加在设计时添加到表单的 winforms 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10745508/