一个简单的树类
来源:互联网 发布:u盘修复数据恢复 编辑:程序博客网 时间:2024/06/09 16:44
树类#Region "树类"
树型项目类#Region "树型项目类"
Public Class CTreeItemClass CTreeItem
Private intParentDataID As Integer = -1
Private intLevel As Integer = -1
Public DataID As Integer
Public Name As String
Public Value As String
Public OtherInfo As COtherInfo
Public Items As CTreeItemCollection
Private _ParentTree As CTree
Public Property ParentTree()Property ParentTree() As CTree
Get
Return _ParentTree
End Get
Set(ByVal Value As CTree)
_ParentTree = Value
End Set
End Property
Private _ParentTreeItem As CTreeItem
Public Property ParentTreeItem()Property ParentTreeItem() As CTreeItem
Get
Return _ParentTreeItem
End Get
Set(ByVal Value As CTreeItem)
_ParentTreeItem = Value
End Set
End Property
Public Sub New()Sub New()
Me.Items = New CTreeItemCollection(Me)
Me.OtherInfo = New COtherInfo
End Sub
Public ReadOnly Property ParentDataID()Property ParentDataID() As Integer
Get
If intParentDataID = -1 Then
If Not _ParentTreeItem Is Nothing Then
intParentDataID = _ParentTreeItem.DataID
ElseIf Not _ParentTree Is Nothing Then
intParentDataID = 0
End If
End If
Return intParentDataID
End Get
End Property
Public ReadOnly Property Level()Property Level() As Integer
Get
If (intLevel <> -1) Then
Return intLevel
End If
Dim TI As Object = Me.ParentTreeItem
Do While TypeOf TI Is CTreeItem
TI = CType(TI, CTreeItem).ParentTreeItem
intLevel += 1
Loop
intLevel += 1
Return intLevel
End Get
End Property
Private Function GetPrevOrNextTreeItem()Function GetPrevOrNextTreeItem(ByVal blnGetNext As Boolean) As CTreeItem
If ((Me.ParentTreeItem Is Nothing) AndAlso (Me.ParentTree Is Nothing)) Then
Throw New Exception("未设置 ParentTreeItem 或 ParentTree 属性,不能获取上一个或下一个项目。")
End If
Dim TIC As CTreeItemCollection
If Me.ParentTreeItem Is Nothing Then
TIC = Me.ParentTree.Items
Else
TIC = Me.ParentTreeItem.Items
End If
Dim num1 As Integer = TIC.IndexOf(Me)
If blnGetNext Then
If (num1 >= (TIC.Count - 1)) Then
Return Nothing
End If
Return TIC.Item(num1 + 1)
Else
If (num1 <= 0) Then
Return Nothing
End If
Return TIC.Item((num1 - 1))
End If
End Function
Public ReadOnly Property PrevTreeItem()Property PrevTreeItem() As CTreeItem
Get
Return GetPrevOrNextTreeItem(False)
End Get
End Property
Public ReadOnly Property NextTreeItem()Property NextTreeItem() As CTreeItem
Get
Return GetPrevOrNextTreeItem(True)
End Get
End Property
Private strPath As String
Public Function Path()Function Path() As String
If strPath Is Nothing OrElse strPath.Length = 0 Then
If Not Me._ParentTreeItem Is Nothing Then
strPath = Me._ParentTreeItem.Path + "/" + Me.Name
Else
strPath = Me.Name
End If
End If
Return strPath
End Function
Private strDataIDPath As String
Public Function DataIDPath()Function DataIDPath() As String
If Me.DataID > 0 Then
If strDataIDPath Is Nothing OrElse strDataIDPath.Length = 0 Then
If Not Me._ParentTreeItem Is Nothing Then
strDataIDPath = Me._ParentTreeItem.DataIDPath + "/" + Me.DataID.ToString
Else
strDataIDPath = Me.DataID.ToString
End If
End If
Return strDataIDPath
End If
End Function
End Class
#End Region
树型项目集合类#Region "树型项目集合类"
Public Class CTreeItemCollectionClass CTreeItemCollection
Inherits CollectionBase
Public ParentTree As CTree
Public ParentTreeItem As CTreeItem
Public Sub New()Sub New()
MyBase.New()
End Sub
Public Sub New()Sub New(ByVal Parent As CTree)
MyBase.New()
Me.ParentTree = Parent
End Sub
Public Sub New()Sub New(ByVal Parent As CTreeItem)
MyBase.New()
Me.ParentTreeItem = Parent
End Sub
Public Function Add()Function Add(ByVal TreeItem As CTreeItem) As Integer
TreeItem.ParentTree = Me.ParentTree
TreeItem.ParentTreeItem = Me.ParentTreeItem
Return MyBase.List.Add(TreeItem)
End Function
Public Function Item()Function Item(ByVal ItemIndex As Integer) As CTreeItem
Return MyBase.List.Item(ItemIndex)
End Function
Public Function IndexOf()Function IndexOf(ByVal Value As CTreeItem) As Integer
Return MyBase.List.IndexOf(Value)
End Function
Public Function FindByName()Function FindByName(ByVal Name As String) As CTreeItem
For Each TI As CTreeItem In Me.List
If TI.Name = Name Then Return TI
Next
End Function
Public Function Remove()Function Remove(ByVal Name As String) As Boolean
For Each Ti As CTreeItem In Me.List
If Ti.Name = Name Then
MyBase.List.Remove(Ti)
Return True
End If
Next
Return False
End Function
Public Function GetValue()Function GetValue(ByVal Name As String) As String
Dim TI As CTreeItem = FindByName(Name)
If Not TI Is Nothing Then Return TI.Value
End Function
End Class
#End Region
Public Class CTreeClass CTree
Public Items As CTreeItemCollection
Public Sub New()Sub New()
Me.Items = New CTreeItemCollection(Me)
End Sub
Protected Overrides Sub Finalize()Sub Finalize()
MyBase.Finalize()
End Sub
End Class
#End Region
- 一个简单的树类
- Mark 一个类...一个很简单的二叉查找树...
- 一个简单的树结构
- 一个简单的树插件
- 一个简单的上传类
- 一个简单的线程类
- 一个简单的分页类
- 一个简单的 Ajax 类
- 一个简单的字符串类
- 一个简单的String类
- 一个简单的日志类
- 一个简单的日志类
- 一个简单的CDIB类
- 一个简单的CDIB类
- 一个简单的Thread类
- 一个简单的计时器类
- 一个简单的基类
- 一个简单的矩形类
- OptiBase400生成的.mp4文件不能在darwin streaming server上播放的问题
- 用Windows 2000 实现网外(Internet)访问代理服务器内部的方法
- 从李开复换门庭开启的缝隙中窥视
- Struts1.2.7新功能一览
- 如何定位某个java类在哪个jar文件
- 一个简单的树类
- 关于Trojan.Rootkit.m病毒(一)
- [转]再述权限管理
- VB中如何修改treeview的背景色
- google真的很简单的
- Linux环境下Oracle的安装与配置
- 基本Servlet API
- 七个有效的文本编辑习惯
- TreeView 控件应用详解