gpt4 book ai didi

c# - 尝试从自定义类以编程方式添加在设计时添加到表单的 winforms 控件

转载 作者:太空宇宙 更新时间:2023-11-03 16:31:11 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com