永发信息网

winform中的TreeView如何在展开一个节点时,关闭已打开节点

答案:3  悬赏:50  手机版
解决时间 2021-11-17 02:35
winform中的TreeView如何在展开一个节点时,关闭已打开节点
最佳答案
先把你的NodeMouseClick事件删除,包括你上面的全部代码,你的代码很糟糕,千万别让你的主管看到。给你的树增加AfterSelect事件,并添加一个类变量如下:

private TreeNode lastSelNode;//设置一个类变量保存最后选中的那个节点
private void tvAdjust_AfterSelect(object sender, TreeViewEventArgs e)
{
if (lastSelNode != null && lastSelNode != e.Node && lastSelNode!=tvAdjust.Nodes[0]) lastSelNode.Collapse();
lastSelNode = e.Node;
e.Node.Expand();
}
现在你点击二级子节点就可以得到你要的效果。这里只是一个思路,就是lastSelNode变量的作用。但这个代码是不完善的,而且绝对不是最优的,只适用于直接点击节点,而不适用于用节点前面的+号来展开节点这个你测试时会注意到。要整个完善你要的效果,你还有很多细节要去处理,你如果要真正的使用TreeView,你最好全面了解清楚一下treeview的各个事件,特别是那些事件的触发顺序(这个你要自己去测试),比如用BeforeExpand事件中去处理关闭前一个节点会更好。
全部回答
在 tvAdjust的BeforeExpand事件里折叠全部CollapseAll();
private void tvAdjust_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
tvAdjust.CollapseAll();
}
每个IF之前增加ELSE
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一汽奔腾x80和东风悦达起亚k3 那个好
想买母婴用品,考拉网是正品吗?
蓝卡最实用的SF是罗斯,格林还是伊戈达拉
商店配电照明应该怎么设计,怎么样设计才好
06款索讷塔与08年志俊哪个好
有谁去过西安领军眼镜配过眼镜?真的免费检查
几十年或几百年以后还有多少人记得侵华战争?
曹植墓的真伪考辨
用7,8,9组成一个有因数2的最大的一个三位数是
有的放矢类的成语
我想问一下东海关光绪年月匠鲁协中五十两银锭
春季农用车应该用什么型号柴油
<a href="javascript:Del();" title="删除" c
求门锁的宣传单内容,朋友家卖门锁的,想自己
男:我在去奶奶家的路上。女:嗯嗯,去吧,多陪陪
推荐资讯
古色美业地址在什么地方,想过去办事,
椒江哪里有招平面模特
巴彦淖尔蓝宇饭店地址有知道的么?有点事想过
在所有车上安装gps系统,怎么查到我想要的那
请问别人故意挨着我家住宅地边上挖沟,有没有
陕建和中天建设在西安哪个好,具体点,比如中
广州站k85火车在几号候车室
铜山区张集办税服务厅地址好找么,我有些事要
明天我将要旅行的作文二百字
qt语音怎么用qq快捷登录
双浮球开关怎么接220V的继电器?
微粒贷借50000的话一年分期每月还多少?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?