繁体   English   中英

尝试从设计类中添加以编程方式在设计时添加到窗体中的winforms控件

[英]Trying to add a winforms control added to form in design time programmatically from a custom class

好的,所以我在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。

另外,您可以构造类并在运行时附加上下文菜单。

也-

您可以使用所有上下文菜单(或Dictionary<ContextMenuStrip> )填充List<ContextMenuStrip> ,并将其公开为以下形式的属性:

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

// // form load event, possibly
this.contextMenus.Add(myContextMenu);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM