treeview 如何展开选中的节点,其它节点收缩。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了treeview 如何展开选中的节点,其它节点收缩。相关的知识,希望对你有一定的参考价值。

aspx中有:
<asp:TreeView ID="TreeView1" runat="server" ShowLines="True" ExpandDepth="0"
OnTreeNodeExpanded="TreeView1_OnTreeNodeExpanded" Target="RightFrame">
<Nodes>
。。。此处省略。重点是下面添加事件:

protected void TreeView1_OnTreeNodeExpanded(object sender, TreeNodeEventArgs e)

//同级只展开一个使用下列程序
/*TreeNodeCollection ts = null;
if (e.Node.Parent == null)

ts = ((TreeView)sender).Nodes;

else
ts = e.Node.Parent.ChildNodes;
foreach (TreeNode node in ts)

if (node != e.Node)

node.Collapse();

*/
//只展开一个第一级使用下列程序
TreeNodeCollection ts = null;
if (e.Node.Parent == null)

ts = ((TreeView)sender).Nodes;
foreach (TreeNode node in ts)

if (node != e.Node)

node.Collapse();



//TreeView1_OnTreeNodeExpanded
参考技术A TreeView.CollapseAll()'收缩所有节点
TreeView.SelectedNode.ExpandAll()'展开当前选中的节点追问

这是写在什么事件里呢?

追答

TreeView_NodeMouseClick

追问

TreeView里面并没有这个事件啊。我是用VS2008,TreeView是服务器控件

追答

哦,我用的是VS2005。可以写在别的事件里试试,比如TreeNodeCheckChanged,Click,思路是一样的,收缩全部,然后把选中的节点展开。

参考技术B 在实际工作中,我们总会遇到这样的问题:
TreeView的Node中,含有子菜单的,需要一点就自动展开不含子菜单的就转向它的URL.
把TreeNode的SelectAction属性设为TreeNodeSelectAction.Expand即可。

wpf中的treeview如何增加2级节点?在C#中如何添加?

用treeview.Items.Add(XXX)可以添加一级节点,但二级节点怎么添加呢?

WPF中TreeView的items一般为TreeViewItem,同时TreeViewItem自身又可以包含新的TreeViewItem,从而形成一棵子树,你想要几级节点就有几级节点了。

C#如下:

            TreeView treeView = new TreeView();

            //第一级,在treeView上添加

            TreeViewItem treeViewItem1 = new TreeViewItem();

            treeViewItem1.Header = "第一级";

            treeView.Items.Add(treeViewItem1);

            //第二级,在treeViewItem1上添加

            TreeViewItem treeViewItem2 = new TreeViewItem();

            treeViewItem2.Header = "第二级";

            treeViewItem1.Items.Add(treeViewItem2);


            //第三级,在treeViewItem2上添加

            TreeViewItem treeViewItem3 = new TreeViewItem();

            treeViewItem3.Header = "第三级";

            treeViewItem2.Items.Add(treeViewItem3);


结果图:

追问

再请问下,我如何能给TreeViewItem的name属性赋值呢,一赋值就报错

参考技术A TreeViewItem的IsExpanded属性啊。
任务:树节点的展开,包括全展开,点击节点的展开,某一层节点的展开。
出发:
1.建树:<Grid>
<TreeView Height="200" HorizontalAlignment="Left" Margin="12,12,0,0" Name="treeView1" VerticalAlignment="Top" Width="120" />
</Grid>

2.为树写节点类(注意继承类):
public class PropertyNodeItem : TreeViewItem

public int Level get; set;
public PropertyNodeItem(string name, string DisplayName, int level)

this.Level = level;
this.Header = DisplayName;
this.Name = name;
// 在此点下面插入创建对象所需的代码。



3.为树增加节点:
public void BindTreeView()

PropertyNodeItem node1 = new PropertyNodeItem("1","中国",0);
PropertyNodeItem node2 = new PropertyNodeItem("2","北京市",1);
PropertyNodeItem node3 = new PropertyNodeItem("3","吉林省",1);
PropertyNodeItem node4 = new PropertyNodeItem("4","上海市",1);
node1.Items.Add(node2);
node1.Items.Add(node3);
node1.Items.Add(node4);
PropertyNodeItem node5 = new PropertyNodeItem("5","海淀区",2);
PropertyNodeItem node6 = new PropertyNodeItem("6","朝阳区",2);
PropertyNodeItem node7 = new PropertyNodeItem("7","大兴区",2);
node2.Items.Add(node5);
node2.Items.Add(node6);
node2.Items.Add(node7);
PropertyNodeItem node8 = new PropertyNodeItem("8","白山市",2);
PropertyNodeItem node9 = new PropertyNodeItem("9","长春市",2);
node3.Items.Add(node8);
node3.Items.Add(node9);
PropertyNodeItem node10 = new PropertyNodeItem("10","抚松县",3);
PropertyNodeItem node11 = new PropertyNodeItem("11","靖宇县",3);
node8.Items.Add(node10);
node8.Items.Add(node11);
treeView1.Items.Clear();
treeView1.Items.Add(node1);


按F5,发现树是出来了,但是未展开,这样的树肯定是影响效果的,那么怎么展开呢,树本身并没有提供展开方法,此时,就该IsExpanded出场了。比如你想要树节点的Level=0的节点展开,只要设node1.IsExpanded = true;那么再F5,就可见效果。举一反三,想让所有的展开,则设置每个父节点的IsExpanded = true即可,又方便,又好理解追问

我只是想知道怎么建子节点而已...不要复制粘贴嘛,你这篇我看过了

追答

关键是您要取一反三,不能什都让给您写好,这样您学程序是学不好的

追问

你发的我以前看过了,且会,你这样复制粘贴,是回答不好别人的问题的

追答

呵呵呵,。。。。。。。。。

以上是关于treeview 如何展开选中的节点,其它节点收缩。的主要内容,如果未能解决你的问题,请参考以下文章

关于c#中treeview节点的收缩与展开(.net web)

ASP中关于TreeView控件的问题,怎样展开、收缩所有子节点?

WPF TreeView节点的展开和收缩

treeview 单击父节点事件

winform 中Treeview控件怎样选中父节点时子节点全部展开,选中其他父节点时原先展开的关闭

如何让treeview所有节点全部展开