>>
51aspx首页
| >>
最新Asp.net源码
| >>
源码推荐
| >>
源码大搜捕
Asp.net源码交流论坛
欢迎:
游客
注册
登录
会员
搜索
界面
在线
帮助
Asp.net源码交流论坛
Asp.net交流讨论区
Asp.ne技术问答
在TreeView中操作节点CheckBox需要注意的
标题
标题
作者
Asp.net网站配置基础视频出炉了
源码使用常见问题
源码发布请点这里
1
/ 1 页
1
跳转
页
标题: 在TreeView中操作节点CheckBox需要注意的
sowoso
发送短消息
查看公共资料
查找该会员全部帖子
2007-12-20 10:07
|
只看楼主
树型
|
收藏
|
小
中
大
1
身份:
学员
UID:
3066
来自:
精华:
0
积分:
3
帖子:
3
注册:
2007-12-20
状态:
离线
威望:
0.00
金钱:
0.45 元
在TreeView中操作节点CheckBox需要注意的
最近应网友要求,写一个Demo程序来演示在TreeView中,选中某个节点,使其子节点全部选中,父节点则根据当前节点变化而进行变更状态。我在实现的时候,想当然在TreeView的AfterCheck事件去做,但是已运行程序,则发现程序溢出了,仔细一看,原来是在修改某个节点的Checked属性时,使得TreeView的AfterCheck事件再次相应,从而造成连锁反应。通过事件参数,可以得到Action属性,查看msdn后,才发现应该在事件中对Action要进行判断,从而避免连锁反应。
大致的方法如下:
[运行代码]
[复制到剪贴板]
[ ± ]
CODE:
private void trvDBBinding_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if( e.Action != TreeViewAction.Unknown )
{
//Event call by mouse or key-press
SetNodeCheckStatus( e.Node, e.Node.Checked );
}
}
private void SetNodeCheckStatus( TreeNode tn, bool Checked )
{
if( tn == null ) return;
// Check children nodes
foreach (TreeNode tnChild in tn.Nodes)
{
tnChild.Checked = Checked;
SetNodeCheckStatus( tnChild, Checked );
}
// Set parent check status
TreeNode tnParent = tn;
int nNodeCount = 0;
while( tnParent.Parent != null )
{
tnParent = (TreeNode)(tnParent.Parent);
nNodeCount = 0;
foreach( TreeNode tnTemp in tnParent.Nodes )
if( tnTemp.Checked == Checked )
nNodeCount++;
if( nNodeCount == tnParent.Nodes.Count )
tnParent.Checked = Checked;
else
tnParent.Checked = false;
}
}
与此类似的事件,还有AfterCollapse、 AfterExpand、 AfterSelect这三个,因此避免事件的连锁反应,一定要对Action进行判断。
Tags功能还挺好用~~
:LöÎñ2Ûbbs.51aspx.comÚZ¬°)!>l-H
本文Tags:
treeview
|
CheckBox
|
菜单
|
多选
|
查看所有>>
-
转:手把手教你如何扩展GridView之自带CheckBox
(2007-6-10 18:02:00)
-
IE WebControls 免费下载
(2007-11-20 10:44:00)
-
vs2003中如何在treeview里加上复选框,并且完成展开时不提交,改变选择节点时才提交
(2007-11-29 14:58:00)
-
写了一个 树形菜单 看起来还不错!
(2007-12-13 21:50:00)
-
解决treeview的checkbox级联选择
(2008-4-10 10:12:00)
nalandra
发送短消息
查看公共资料
查找该会员全部帖子
2008-06-12 12:49
|
树型
|
收藏
|
小
中
大
2
身份:
学员
UID:
21845
来自:
精华:
0
积分:
1
帖子:
1
注册:
2008-06-12
状态:
离线
威望:
0.00
金钱:
0.10 元
回复:在TreeView中操作节点CheckBox需要注意的
之前以为要用before事件cancel,原来是靠action屏蔽掉连锁反应 ,感谢楼主的文章
:LöÎñ2Ûbbs.51aspx.comÚZ¬°)!>l-H
<<
上一主题
|
下一主题
>>
1
/ 1 页
1
跳转
页
论坛跳转...
Asp.net交流讨论区
Asp.ne技术问答
Asp.net技术文章
Asp.net源码问答区
源码/资源供求
[源码发布]
[视频发布]
[商业代码区]
[其他.net相关资源]
常用工具下载
Asp.net专题讨论区
Ajax/Atlas无刷新技术
面向对象开发
ADO.net讨论区
控件专题讨论
51aspx站务相关
常见问题&帮助
站内活动、公告
反馈/建议
内部交流区
灌水/非技术
[垃圾箱/恶性广告]
现在时间是:
2008-11-24 02:02:35
京ICP备06046876号