代码之家  ›  专栏  ›  技术社区  ›  Serge van den Oever

在Forms treeview中扩展节点类型和上下文操作的最佳方法

  •  1
  • Serge van den Oever  · 技术社区  · 17 年前

    我正在为VisualStudio2008开发一个VisualStudio插件,它显示一个树视图,提供服务器产品中内容的视图。服务器产品包含不同类型的节点,每个节点都有自己类型的上下文菜单(右键单击菜单)。

    1 回复  |  直到 17 年前
        1
  •  1
  •   Scott Whitlock    17 年前

    我将提供一个公共库,您的代码和插件库都链接到该库(称之为契约依赖)。在这里,为节点类型定义一个接口,如INodeType。此外,考虑在其中实现INodeType的抽象对象类型,并提供插件作者可以在其构造函数中设置的一些有用属性。

    INodeType的属性之一是返回windows窗体上下文菜单的ContextMenu属性。

    在代码中创建属性:

    [Import("NodeTypes", typeof(INodeType))]
    public IEnumerable<INodeType> extensionNodeTypes { get; set; }
    

    你可以在作曲后列举出来。

    在插件代码中,他们会声明新的节点类型(可能无法编译):

    [Export("NodeTypes", typeof(INodeType))]
    public class SomeNodeType : AbstractNodeType
    {
        public SomeNodeType()
        {
            this.ContextMenu = base.BuildContextMenu(/* ... */);
            /* etc. */
        }
        /* ... other custom logic ... */
    }
    

    我希望我没有弄乱语法,但这是总的想法。

    推荐文章