日期:2021年4月11日标签:CSharp

treeview树节点添加自定义按钮 #

这是我自定义的一个winform treeview组件,可以在每个树节点旁边添加自定义按钮,效果如下图所示。

WpfTreeview演示图

一.类介绍 #

这个组件由四个类组成:WpfTreeViewWpfTreeNodeButtonMenuButtonItem

类名功能继承
WpfTreeView表示一棵树。TreeView
WpfTreeNode表示树节点。TreeNode
ButtonMenu表示树节点旁边的一组按钮。
ButtonItem表示ButtonMenu中的一个按钮。

二.使用方法 #

public Form1()
{
    InitializeComponent();
    
    // 创建ButtonMenu
    ButtonMenu bm1 = new ButtonMenu(this.wpfTreeView1);
    ButtonMenu bm2 = new ButtonMenu(this.wpfTreeView1);
    
    // 给bm1添加按钮(ButtonItem)
    bm1.AddButtonItems(new ButtonItem(newImage, "New File", new ButtonItemClickEventHandler(newFileClick)));
    bm1.AddButtonItems(new ButtonItem(openImage, "Open File", new ButtonItemClickEventHandler(openFileClick)));
    // 给bm2添加按钮(ButtonItem)
    bm2.AddButtonItems(new ButtonItem(saveImage, "Save File", new ButtonItemClickEventHandler(saveFileClick)));
    bm2.AddButtonItems(new ButtonItem(deleteImage, "Delete File", new ButtonItemClickEventHandler(deleteFileClick)));
    bm2.AddButtonItems(new ButtonItem(copyImage, "Save File", new ButtonItemClickEventHandler(copyFileClick)));
    
    // 创建没有按钮的根节点
    WpfTreeNode root = this.wpfTreeView1.AddWPFTreeNode("WpfTreeView Demo");
    // 根节点添加节点1,并给节点1添加bm1(ButtonMenu,一组按钮)
    WpfTreeNode child1 =  root.AddWPFTreeNode("节点1", bm1);
    // 节点1添加节点1-1,并附带按钮bm2(ButtonMenu,一组按钮)
    WpfTreeNode child1_1 = child1.AddWPFTreeNode("节点1-1", bm2);
    // 添加没有按钮的子节点1,2,3
    child1_1.AddWPFTreeNode("1");
    child1_1.AddWPFTreeNode("2");
    child1_1.AddWPFTreeNode("3");
    // 继续添加节点
    child1.AddWPFTreeNode("节点1-2", bm2);
    WpfTreeNode child2 =  root.AddWPFTreeNode("节点2", bm1);
    child2.AddWPFTreeNode("节点2-1", bm2);
    WpfTreeNode child3 =  root.AddWPFTreeNode("节点3", bm1);
    child3.AddWPFTreeNode("节点2-1", bm2);
    
    // 展开
    this.wpfTreeView1.ExpandAll();
}

三.源码地址 #

github地址:https://github.com/pengfeiw/wpftreeview

(完)

目录