【发布时间】:2015-05-19 14:26:59
【问题描述】:
我正在使用不同类型的 TreeNode 创建一个 TreeView,每个 TreeNode 都有自己的 ContextMenuStrip 菜单。
我有一个类ElementTreeNode,它继承自TreeNode。我想添加一个ElementContextMenu,它继承自ContextMenuStrip 菜单,右键单击节点时应该打开。
我的第一种方法是简单地将ElementContextMenu 的实例添加到我的ElementTreeNode 的ContextMenuStrip 属性中。但是我向ElementTreeNode 添加了一个EventHandler,我无法以这种方式访问它。可能是因为属性向下转换为ContextMenuStrip,因此丢失了仅存在于ElementContextMenu 中的EventHandler:
class ElementTreeNode : TreeNode
{
public ElementTreeNode()
{
ContextMenuStrip = new ElementContextMenu();
}
}
我的第二个想法是给类添加一个属性ElementContextMenu,然后让右键事件打开这个菜单而不是ContextMenuStrip属性:
class ElementTreeNode : TreeNode
{
public ElementContextMenu ElementContextMenu;
public ElementTreeNode()
{
ElementContextMenu = new ElementContextMenu();
}
}
所以我的问题是:
当我右键单击节点时,如何打开ElementContextMenu 属性而不是ContextMenuStrip?
有没有办法改变这种行为?
【问题讨论】: