Visual Studio .NET 2003Visual Basic 6.NET 1.1Windows 2000Windows XP中级开发Visual StudioWindows.NETVisual Basic
VB.NET TreeListView






4.62/5 (28投票s)
一个树形/列表混合视图,继承自 Control,全部自定义绘制...
引言
首先,我想说明的是,这段代码还处于早期阶段,所以你可能会发现一些奇怪的(!)bug,或者一些以不寻常的方式完成的事情!
如果你确实发现了 bug,或者有任何关于改进方法的评论,请不要犹豫 发邮件给我。
需要一个非常灵活且易于定制的 Treeview
,我首先尝试继承 .NET 附带的标准 TreeView
控件。 我立刻遇到了一些无法找到令人满意解决方案的问题,这让我开始研究编写一个继承自 Control
的 TreeView
,并自己完成所有绘制的可行性。 好吧,乍一看,问题不大 - 我从尝试自定义绘制的 ListView
开始,这相当简单,那么 TreeView
还能有多难呢...!?
使用代码
好的,我希望这些类尽可能地可扩展,所以我首先创建了
Public MustInherit Class View
Inherits Control
这个 View
类处理继承自它的任何树/列表类型控件通用的基本内容。
- 它维护一个列的集合
- 它处理列标题、边框等的绘制。
- 它提供了一个
Protected MustOverride Sub DrawItems(ByVal g As Graphics, ByVal r As Rectangle)
- 它有两个变量
TotalHeight
和TotalWidth
,用于设置滚动条。 TotalHeight
必须由继承者在其DrawItems
方法中维护。TotalWidth
由 View 类维护,因为它知道它自己的列集合。
让你掌握它的最佳方法是下载它!
关注点
我很高兴能做到这一点,并且学到了很多关于如何自己绘制控件的知识。 我试图避免人为的代码,并尽力保持一切尽可能纯粹。 我坚信,如果你必须做一个快速而肮脏的修复,它稍后会回来困扰你...!
奇怪的是,我发现 Microsoft Paint 在编写此代码时非常有用...... 能够进行屏幕打印,然后使用 Paint 放大并查看我的 Paint 代码的准确程度非常有用......!
计划的更新
我希望添加根线的绘制,以及在每个节点上添加图标的能力。
历史
- 2003 年 12 月 4 日 - 首次发布。
- 2003 年 12 月 18 日 - Zip 已更新。