分享
 
 
 

TreeView的动态邦定的实现

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

简单分析一下treeview的结构

Treeview是由节点TreeNode组成的,第一级的称之为根节点TreeRoot,在根节点之下一级的称之为某个根节点的子节点TreeLeaf,某个子节点之下一级的子节点就称为该子节点的子节点。第个节点有两个标识方式,一个是它的Text,即显示出来的内容;另一个是它的Tag属性,一般用唯一标识码对其进行标识,以用于在使用时对节点的识别。在本文中,也主要用Text属性来显示节点的名称字段,用Tag属性来显示节点的编号属性。(节点编号被设为主键,也就是唯一的标识了)

首先要将树型控件添加到Form窗体上,然后根据数据库中的信息来动态填充Treeview。

代码如下:

'加载树第一层

Public Function loadTree() As Integer

Dim tree_root As New TreeNode

tree_root.Tag = "0"

tree_root.Text = "管网"

TreeView1.Nodes.Add(tree_root)

End Function

Public Function NodeLevel(ByVal n As TreeNode) As Byte

'* 找出树中当前节点的级数

Dim i As Byte = 1

Dim m As String

Do Until n.Parent Is Nothing

n = n.Parent

i += 1

Loop

Return i

End Function

'处理点击了树的节点之后的事件的处理,动态加载树节点

Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect

Select Case NodeLevel(e.Node).ToString

Case "1"

If e.Node.GetNodeCount(False) = 0 Then

Dim tree_root As New TreeNode

tree_root.Tag = "11"

tree_root.Text = "水线"

TreeView1.SelectedNode.Nodes.Add(tree_root)

Dim tree_root1 As New TreeNode

tree_root1.Tag = "12"

tree_root1.Text = "汽线"

TreeView1.SelectedNode.Nodes.Add(tree_root1)

'ryp = Me.ryl.GetObjByQry("")

'If (Not ryp Is Nothing) Then

' Dim ryplength As Integer = ryp.Length

' Dim m_i As Integer

' For m_i = 0 To ryplength - 1

' Dim tree_root As New TreeNode

' tree_root.Tag = ryp(m_i).get_ID_I

' tree_root.Text = ryp(m_i).get_GX_NAME_S

' TreeView1.SelectedNode.Nodes.Add(tree_root)

' Next

'End If

'MainFrom.ActiveForm.Activate()

End If

Case "2"

If e.Node.GetNodeCount(False) = 0 Then

ryp = Me.ryl.GetObjByQry("")

If (Not ryp Is Nothing) Then

Dim ryplength As Integer = ryp.Length

Dim m_i As Integer

For m_i = 0 To ryplength - 1

If ryp(m_i).get_GX_NET_S.Equals(TreeView1.SelectedNode.Text) Then

Dim tree_root As New TreeNode

tree_root.Tag = ryp(m_i).get_ID_I

tree_root.Text = ryp(m_i).get_GX_NAME_S

TreeView1.SelectedNode.Nodes.Add(tree_root)

End If

Next

End If

'TreeView1.Focus()

End If

Case "3"

If e.Node.GetNodeCount(False) = 0 Then

If TreeView1.SelectedNode.Parent.Text.Equals("汽线") Then

Dim tree_root As New TreeNode

tree_root.Tag = "31"

tree_root.Text = "汽水站"

TreeView1.SelectedNode.Nodes.Add(tree_root)

Dim tree_root1 As New TreeNode

tree_root1.Tag = "32"

tree_root1.Text = "汽用户"

TreeView1.SelectedNode.Nodes.Add(tree_root1)

Else

Dim m_str = " where GX_REL_S=" + "'" + TreeView1.SelectedNode.Tag + "'"

'MsgBox(m_str)

ssp = Me.ssl.GetObjByQry(m_str)

If (Not ssp Is Nothing) Then

Dim ssplength As Integer = ssp.Length

Dim m_i As Integer

For m_i = 0 To ssplength - 1

Dim tree_root As New TreeNode

tree_root.Tag = ssp(m_i).get_ID_I

tree_root.Text = ssp(m_i).get_STATION_NAME_S

TreeView1.SelectedNode.Nodes.Add(tree_root)

Next

End If

End If

End If

Case "4"

If e.Node.GetNodeCount(False) = 0 Then

Dim m_str = " where GX_REL_S=" + "'" + TreeView1.SelectedNode.Parent.Tag + "'"

If TreeView1.SelectedNode.Text.Equals("汽水站") Then

qsp = Me.qsl.GetObjByQry(m_str)

If (Not qsp Is Nothing) Then

Dim qsplength As Integer = qsp.Length

Dim m_i As Integer

For m_i = 0 To qsplength - 1

Dim tree_root As New TreeNode

tree_root.Tag = qsp(m_i).get_ID_I

tree_root.Text = qsp(m_i).get_STATION_NAME_S

TreeView1.SelectedNode.Nodes.Add(tree_root)

Next

End If

'End If

ElseIf TreeView1.SelectedNode.Text.Equals("汽用户") Then

yhp = Me.yhl.GetObjByQry(m_str)

If (Not yhp Is Nothing) Then

Dim yhplength As Integer = yhp.Length

Dim m_i As Integer

For m_i = 0 To yhplength - 1

Dim tree_root As New TreeNode

tree_root.Tag = yhp(m_i).get_ID_I

tree_root.Text = yhp(m_i).get_CUSTOMER_S

TreeView1.SelectedNode.Nodes.Add(tree_root)

Next

End If

' End If

Else

MsgBox("dao di la!")

'If myForm.SSWindowForm Is Nothing Then

' Dim sswindow As New WinForm.Main.SSWindow

' myForm.SSWindowForm = sswindow

' MsgBox("create sswindow")

'End If

'myForm.SSWindowForm.Show()

Dim sswindow As New WinForm.Main.SSWindow

myForm.MainForm = Me.ActiveForm

sswindow.SSStationID = TreeView1.SelectedNode.Tag

sswindow.ShowDialog()

End If

End If

Case "5"

If e.Node.GetNodeCount(False) = 0 Then

MsgBox("qi ya!")

End If

End Select

End Sub

这样就实现了根据数据库中的内容动态分级加载树节点

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有