winform下的treeview的加载和checkbox的设置
来源:互联网 发布:世界大数据公司排名 编辑:程序博客网 时间:2024/04/30 11:11
参照了网上的一些教程自己弄了个完整点的代码
/// <summary>
/// 设置菜单树
/// </summary>
private void SetMenu()
{
DataTable dtMenu = new DataTable();
dtMenu = SysManager.GetMenu("", "");
treeMenu.CheckBoxes = true;
//创建菜单树
CreateTreeView(treeMenu.Nodes, dtMenu, 0);
treeMenu.ExpandAll();
}
/// <summary>
/// 创建treeView
/// </summary>
/// <param name="nodes"></param>
/// <param name="dt"></param>
/// <param name="intMenuID"></param>
private void CreateTreeView(TreeNodeCollection nodes, DataTable dt, int intMenuID)
{
//过滤条件
string strFilter = string.Empty;
strFilter = string.Format("AM_PID={0}", intMenuID);
DataRow[] arrDR = dt.Select(strFilter);
foreach (DataRow dr in arrDR)
{
TreeNode node = new TreeNode();
node.Text = (string)dr["AM_TEXT_CH"];
node.Tag = Convert.ToInt32(dr["AM_CID"]);
nodes.Add(node);
CreateTreeView(node.Nodes, dt, Convert.ToInt32(node.Tag));
}
}
/// <summary>
/// 系列节点 Checked 属性控制
/// </summary>
/// <param name="e"></param>
private void CheckControl(TreeViewEventArgs e)
{
if (e.Action != TreeViewAction.Unknown)
{
if (e.Node != null)
{
CheckParentNode(e.Node, e.Node.Checked);
}
if (e.Node.Nodes.Count > 0)
{
CheckAllChildNodes(e.Node, e.Node.Checked);
}
}
}
/// <summary>
/// 改变所有子节点的状态
/// </summary>
/// <param name="pn"></param>
/// <param name="IsChecked"></param>
private void CheckAllChildNodes(TreeNode pn, bool IsChecked)
{
foreach (TreeNode tn in pn.Nodes)
{
tn.Checked = IsChecked;
if (tn.Nodes.Count > 0)
{
CheckAllChildNodes(tn, IsChecked);
}
}
}
/// <summary>
/// 改变父节点的选中状态
/// </summary>
/// <param name="curNode"></param>
/// <param name="IsChecked"></param>
private void CheckParentNode(TreeNode curNode, bool IsChecked)
{
bool bChecked = true;
if (curNode.Parent != null)
{
foreach (TreeNode node in curNode.Parent.Nodes)
{
if (node.Checked == false)
{
bChecked = false;
break;
}
}
if (bChecked)
{
curNode.Parent.Checked = true;
CheckParentNode(curNode.Parent, true);
}
else
{
curNode.Parent.Checked = true;
CheckParentNode(curNode.Parent, true);
}
}
}
public RoleMenu()
{
InitializeComponent();
}
private void RoleMenu_Load(object sender, EventArgs e)
{
SysManager = (SystemManager)ServiceLocator.FindService("SystemManager");
//加载菜单树
SetMenu();
}
private void treeMenu_AfterCheck(object sender, TreeViewEventArgs e)
{
CheckControl(e);
}
- winform下的treeview的加载和checkbox的设置
- 关于winform下treeview中CheckBox选择的方法
- winform 下 Treeview中CheckBox选中项的技巧
- winForm中应用带CheckBox的TreeView
- 关于Winform下,获取Treeview中CheckBox选中项的技巧
- winform Treeview设置右键点击的节点
- C# winform TreeView中关于checkbox选择的完美类
- winform中TreeView的checkbox父节点连带子节点
- WinForm下的TreeView拖拽操作
- 带Checkbox的TreeView
- 带Checkbox的TreeView
- 带CheckBox的TreeView
- Winform TreeView的用法
- winform里的treeview
- WinForm TreeView的使用
- WPF ,WinForm的TreeView
- c# winform treeview的绑定和遍历
- 实现winform中的treeview控件部分节点显示checkbox,部分节点不显示checkbox的功能
- 大数据量下快速获取 SQL Server 数据库表记录数的方法
- 计算页面停留时间
- Enterprise Library Validation Application Block Step by Step (3)
- windows命令行常用命令
- 网站页面自动跳转实现方法PHP、JSP等
- winform下的treeview的加载和checkbox的设置
- 汉字转化成ACSII
- GenericServlet
- Eclipse控制台不限日志行数
- 十六.业务流程管理及重组BPM/BPR :Rebuild
- 两周了
- QT国际化的应用
- linux系统下用shell脚本创建FTP帐号
- H.264学习