vb.net+树形,vb树形控件

vb.net treeview 几个问题

这种不要用递归,知道关键字长度,知道节数用判断就可以了,取前3位第一节,第二节取3个为父节点,取全部为第二节关键字,第三节取前6个为父节点,取全部为第三节关键字.

创新互联是一家专注于做网站、网站设计与策划设计,黄骅网站建设哪家好?创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:黄骅等地区。黄骅做网站价格咨询:13518219792

并没有要求培养字段,查询时从len(ID)=3*N,每次循环时N都+1

select * from tablename where len(id)=3

select case N

case 1

treeview.node.add id,name

case 2

treeview.node(left(id,3)).node.add id,name

case 3

treeview.node(left(id,3)).node(left(id,6)).add id,name

end select

查询结果排个升序就不会存在这样的问题了,你刚才说的那种,如果中间没有比001001001001001更短的关键字,那么就脱节,这种是不可能添加到treeview中.

递归一般用在不知道节数,没有关键字的情况,比如系统目录结构.

原文:

.NET中的treeview(树形菜单)控件怎么用阿??

使用 treeview的 AfterSelect 事件,如:

vb.net代码:

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

'执行相应的功能。

End Sub

Vb.net treeview树形导航示例,可以打开新的窗口。

BOOL WINAPI EnumChildWindows

(v=vs.85).aspx

找对方主窗口中的子窗口,直到子窗口类为TreeView

然后再用个CWnd* pOtherTreeWnd = CWnd::Accach(treeView.m_hWnd);

VB.net怎么制作树形菜单啊?

你说的“树形菜单”是指下拉菜单(可以有子菜单)吗?如果是,VB.net提供了MenuStrip控件,在工具箱里能找到,直接就在对应位置打字就可以了,完全是“所见即所得”。

VB.NET中的treeview控件

''' summary

''' 加入菜单子节点

''' /summary

''' param name="tbMenu"菜单表/param

''' param name="tvNode"父节点/param

''' remarks/remarks

Private Sub AddNode(ByVal tbMenu As DataTable, ByVal tvNode As TreeNode)

Dim myRow As DataRow() = tbMenu.Select(String.Format("PRMENUID = '{0}'", tvNode.NodeID), "SORTORDER")‘查询子菜单,按SORTORDER字段排序

Dim strURL As String = String.Empty‘菜单链接

For Each DataRow In myRow’循环所有子菜单

Dim MainMenuNode As TreeNode = New TreeNode() With {.Text = DataRow.Item("VALUE"), .NodeID = DataRow.Item("MENU_ID")}'实例化一个子节点

If DataRow.Item("URL").ToString.Length 0 Then

strURL = String.Format("{0}?menuid={1}", DataRow.Item("URL"), DataRow.Item("MENUID"))’菜单链接

MainMenuNode.NavigateUrl = strURL

MainMenuNode.IconUrl = "../image/leaf.gif"‘菜单图标

End If

MainMenuNode.SingleClickExpand = True’设置单击菜单时展开子菜单

MainMenuNode.Expanded = True‘默认展开所有菜单

tvNode.Nodes.Add(MainMenuNode)’将子节点添加进父节点

AddNode(tbMenu, MainMenuNode) '利用递归生成树形菜单

Next

End Sub

希望对你有帮助。

VB.net如何动态获取菜单栏中的菜单名并用树型表示

添加:(先在加一个contextMenu,再它的添加子菜单的click事件编程)

Try

’使TreeView可以被编辑

TreeView1.LabelEdit = True

‘判断你是不是选定的是不可编辑的节点,我这里工种节点不可以被编辑,只有工种下级的

各个工种名称可以被编辑

If Trim(TreeView1.SelectedNode.Text) = "工种" Then

‘添加节点

AddNode = New TreeNode("请输入新工种名字")

TreeView1.SelectedNode.Nodes.Add(AddNode)

TreeView1.ExpandAll()

AddNode.BeginEdit()

TreeView1.LabelEdit = True

NodeAdded = True

End If

Catch err As Exception

MsgBox(err.ToString)

End Try

删除与添加类似,只是如果你的节点名字从其他处(如数据库)得来,那么你还需要更新数据库

编辑:

Private Sub TreeView1_BeforeLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.NodeLabelEditEventArgs) Handles TreeView1.BeforeLabelEdit

TreeView1.LabelEdit = True ‘使可以编辑

AddNode = TreeView1.SelectedNode

End Sub

Private Sub TreeView1_AfterLabelEdit(ByVal sender As Object, ByVal e As System.windows.Forms.NodeLabelEditEventArgs) Handles TreeView1.AfterLabelEdit

Try

‘此时你改完了节点名字

TreeView1.SelectedNode.EndEdit(True)

If e.Label Is Nothing Then

'do nothing

ElseIf e.Node.Text = "工种" Then ‘工种不能改

e.CancelEdit() = True

‘e.Node.Text ,e.Label.ToString 一个是改前的名字一个是该后的名字,具体哪个对

哪个请查MSDN

ElseIf Trim(e.Node.Text) "工种" And e.Node.Text e.Label.ToString Then

If MsgBox("此操作会导致当前工种中的所有人员的工种都被更改,是否确定?", MsgBoxStyle.YesNo + MsgBoxStyle.Information, "警告") = MsgBoxResult.Yes Then

。。。。 ‘我的更改

MsgBox("更改成功!", MsgBoxStyle.OKOnly, "提示")

'Call InitTree() ‘有时要重新把treeview初始化一遍,视需求定

End If

End If

Catch err As Exception

MsgBox(err.ToString)

End Try

End Sub

其他:

挡treeview得到焦点时你可以使用ContextMenu,反之ContextMenu禁用

Private Sub TreeView1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.GotFocus

TreeView1.ContextMenu = ContextMenu1

End Sub

Private Sub TreeView1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.LostFocus

TreeView1.ContextMenu = Nothing

End Sub

注意:这里没有在ContextMenu菜单添加“更改”项,而是直接更改:即左键单击节点表示

选中,再单击一下就可以编辑了,更改之后单击他处就完成更改,和你在windows中更改文

件名字相似。


网站栏目:vb.net+树形,vb树形控件
文章起源:http://myzitong.com/article/dsggepi.html