会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
黑板报
博客园
首页
新随笔
联系
管理
订阅
树型结构CheckBox的控制
前几天研究treeView控件时写的一个控制CheckBox类,想给各位大侠评价一下,谢谢大家多多指点。
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Data;
using
System.Windows.Forms;
namespace
Helper
{
public
class
TreeViewHelper
{
树型结构CheckBox的控制
#region
树型结构CheckBox的控制
/**/
///
<summary>
///
树型结构CheckBox的控制
///
</summary>
///
<param name="Node"></param>
///
<param name="Checked"></param>
public
void
OperationNodeChecked(TreeNode Node,
bool
Checked)
{
ParentNodeChecked(Node, Checked);
NodesChecked(Node, Checked);
}
/**/
///
<summary>
///
控制父节点的状态
///
</summary>
///
<param name="tn">
选中节点
</param>
///
<param name="Checked">
选中节点的状态
</param>
private
void
ParentNodeChecked(TreeNode tn,
bool
Checked)
{
if
(IsNextNodeChecked(tn.Parent))
return
;
tn.Parent.Checked
=
Checked;
ParentNodeChecked(tn.Parent, Checked);
}
/**/
///
<summary>
///
控制子节点的状态
///
</summary>
///
<param name="tn">
选中节点
</param>
///
<param name="Checked">
选中节点的状态
</param>
private
void
NodesChecked(TreeNode tn,
bool
Checked)
{
foreach
(TreeNode node
in
tn.Nodes)
{
node.Checked
=
Checked;
NodesChecked(node, Checked);
}
}
/**/
///
<summary>
///
节点操作的方法
///
</summary>
///
<param name="ParentNode">
父节点
</param>
///
<returns></returns>
private
bool
IsNextNodeChecked(TreeNode ParentNode)
{
bool
Checked
=
true
;
/**/
///
状态 true为未选中,false为选中
int
NodesCount
=
0
;
/**/
///
记录未被选中的节点个数
if
(ParentNode
==
null
)
return
Checked;
foreach
(TreeNode tn
in
ParentNode.Nodes)
{
if
(tn.Checked)
Checked
=
true
;
else
NodesCount
++
;
}
if
(ParentNode.Checked
==
false
&&
Checked
==
false
)
/**/
///
Checked
=
false
;
if
(ParentNode.Checked
==
true
&&
Checked
==
false
)
/**/
///
Checked
=
false
;
if
(ParentNode.Checked
==
false
&&
Checked
==
true
)
/**/
///
Checked
=
false
;
if
(NodesCount
==
ParentNode.Nodes.Count)
/**/
///
子节点全不选中状态
Checked
=
false
;
return
Checked;
}
#endregion
}
}
posted @
2008-03-22 22:35
船夫水手
阅读(
164
) 评论(
0
)
收藏
举报
刷新页面
返回顶部
公告