Aga.Controls.Tree.TreeViewAdv使用教程之概要介绍

下面的屏幕截图说明的 TreeViewAdv功能:

介绍

工作在几个不同的项目,我需要显示和编辑分层数据。 当然,你会做的第一件事是使用标准的.NET TreeView控制。 它工作得很好,如果你只需要基本的功能。 但是,学习这种控制做更复杂的东西,不是一件容易的事。 我无法找到一个替代的TreeView控制是免费的,完全符合我的需要,所以最后我决定写我自己的。

这种控制主要来源于Java Swing的组件架构,进行一些修改。 这些措施的TreeViewAdv控制的主要特点是:

Model-View architecture :将会在另一篇文章中,说明。
Multiselection :多个节点选择
Unlimited number of controls for each node:不限制每个节点的控件数;比如,你可以在一个节点中显示3个icon、一个CheckBox、两个Label
Multicolumns:多列
Load on Demand :节点惰性加载,不在一开始载入全部的节点
Drag & Drop highlighting:动态高亮拖放的位置
100% pure .NET code :不用任何的API

[模型-视图构架]

我非常喜欢模型-视图构架(Model-View Architecture),然后决定在这个控件中使用这个设计模式。该模式主要的思想是把模型(业务对象)和它的实现(控件)分开。当模型改变的时候,触发对应的事件。代码如下:
 1 public interface ITreeModel
 2 {
 3     IEnumerable GetChildren(TreePath treePath);
 4     bool IsLeaf(TreePath treePath);
 5 
 6     event EventHandler<TreeModelEventArgs> NodesChanged; 
 7     event EventHandler<TreeModelEventArgs> NodesInserted;
 8     event EventHandler<TreeModelEventArgs> NodesRemoved; 
 9     event EventHandler<TreePathEventArgs> StructureChanged;
10 }
非常简单, GetChildren 返回对应的子节点, IsLeaf 返回是否是叶子节点。当拖动等动作时,事件被触发。

下面的类 TreePath用以获取树的路径:
Code
1 public class TreePath
2 {
3     public object[] FullPath{ get; }
4     public object LastNode{ get; }
5     public object FirstNode{ get; }
6 }

TreeView使用

在源代码中,你可以发现两个使用 TreeViewAdv的例子。最简单的方法是使用 TreeModel。你所要做的只是向Tree中填充数据,然后显示它。
Code
1 _model = new TreeModel();
2 _model.Nodes.Add(new Node("Root"));
3 _tree.Model = _model;
如果,想使用它的更多的功能,你需要实现 ITreeModel接口,看看代码中的 folder browser,就会明白很多了。
有一些帮助定制TreeView的外观和行为的属性。 主要的有:
  • Model -指定此属性显示你的模型。
  • NodeControls -节点控制,将被用于可视化的模型。 您应该提供至少一个NodeControl才能看到的模型。
  • LoadOnDemand -所有在启动或子节点的父节点展开时。
  • SelectionMode - Single (无多选), MultiMultiSameParent (只有一个节点的子节点可多选项)。
  • UseColumns -显示列。
  • Columns -列的集合。 对于每一列,你可以指定它的头,宽度和对齐方式。

NodeControls

标准的TreeView显示的每个节点只有一个图标, CheckBoxLabel 。 在TreeViewAdv ,您可以使用任意数量的NodeControl 。 所有控件都必须继承抽象类从“ NodeControl “。 继承的类包含的绘制控件和响应用户的动作 - 鼠标和键盘事件。

NodeControl

所有NodeControl的类图:

类图

BindableControl类提供' DataPropertyName ',这是用于控制来读取和写入数据的节点。 所有你需要的是指定你的类的属性的名称。

TreeViewAdv控件下载和英文说明:http://www.codeproject.com/Articles/14741/Advanced-TreeView-for-NET

转载于:https://www.cnblogs.com/jsyb/archive/2013/03/08/2949087.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值