关于VS2005 Treeview 问题

zsllovelw 2009-02-17 11:05:55
我在VS2005中使用TREEVIEW控件从数据库中动态抽取数据形成了一个树,但只能点每一级前面的加号才能打开这一级的菜单,我的问题是:

一\能不能点击每一级的文字就打开这一级呢?比如说:+单位,在这里我点击+能打开,点击单位就没有反应;

二\另外这里的+很小,如何显示大加号呀!


我想要的最终效果是这个样子:http://msdn.microsoft.com/zh-cn/library/aa187919.aspx

请大家注意我这里是动态从数据库中抽取的数据形成的TREE,不是静态的.
...全文
72 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
abel_cn 2009-02-19
  • 打赏
  • 举报
回复
倒~~~把这段改成c#的方法就ok了啊~~~
zsllovelw 2009-02-18
  • 打赏
  • 举报
回复
3楼的我没看明白,不好意思我是新手
zsllovelw 2009-02-18
  • 打赏
  • 举报
回复
先谢谢你,我是在C#里做的,不好意思,忘说了
天府荣城 2009-02-18
  • 打赏
  • 举报
回复
在C#里面,
第一个问题:在节点的选中事件中,由你在事件中展开,应该就可以了。
至于第二个问题,可能在属性中会进行设置吧,要么自己继承这个类,然后重写那个方法。
abel_cn 2009-02-18
  • 打赏
  • 举报
回复
第二个问题:

把treeview控件的ShowPlusMinus 设置为false, 在窗体中添加一个ImageList,其中添加两个状态图片,在程序中判断如果是展开的就显示-号图片,反之显示+号图片。


搞定~~~
abel_cn 2009-02-18
  • 打赏
  • 举报
回复
lz要实现这两个功能方法如下:

第一个问题:

1.在窗体load时候,将最最上层的结点添加上
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
dt = GetTable("select * from tree") //这里是获得表的内容

Dim dv As DataView = dt.DefaultView
dv.RowFilter = "parentid='0'"

For Each row As DataRowView In dv
Dim nd As New TreeNode(row("text"))
nd.Tag = row("id")
tree.Nodes.Add(nd)
Next
End Sub

2.在tree的AfterExpand和MouseDown添加如下代码:
    Private Sub tree_AfterExpand(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles tree.AfterExpand
LoadNodes(e.Node)
End Sub

Private Sub tree_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles tree.MouseDown
Dim ndTemp As TreeNode

ndTemp = tree.GetNodeAt(e.Location)

If Not ndTemp Is Nothing Then
LoadNodes(ndTemp)
ndTemp.Expand()
End If
End Sub

Private Sub LoadNodes(ByVal node As TreeNode)
If Not node Is Nothing Then
Dim dv As DataView
dv = dt.DefaultView
dv.RowFilter = "parentid='" + node.Tag.ToString() + "'"

For Each row As DataRowView In dv
Dim nd As New TreeNode(row("text"))
nd.Tag = row("id")
node.Nodes.Add(nd)
Next
End If
End Sub


这样一来就可以实现第一个问题了。不管是点+号,还是文本都可以动态加载结点下的内容

注:数据库中的tree表结构为三列 id,parentid,text,最上层的parentid都为0,子结点的parentid为最上层结点的id

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧