这是我自定义的一个winform treeview组件,可以在每个树节点旁边添加自定义按钮,效果如下图所示。
这个组件由四个类组成:WpfTreeView
、WpfTreeNode
、ButtonMenu
、ButtonItem
。
类名 | 功能 | 继承 |
---|---|---|
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
(完)