求代码,有关C#winform树控件的 现在想给管理员添加管理权限,分别是右边的“用户管理”和"借阅管理",实现功能:选中两个复选框然后再按确定就能添加管理员的权限,搞了几个小时都没弄出来,求给源码学习。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是啊 我就是这样实现的 操作数据库就是那我说下我以前实现的步骤:首先我数据库肯定是有主外建的你的管理权限设置里面的数据我是从数据库里面动态加载上去的修改权限那么肯定也关联到我的userinfo表也就是用户表包括管理员 //先实现节电选中功能,private void CheckNode(TreeNodeCollection trv)//trv是权限树的根节点下的所有子节点集合 { List<string> listr = new List<string>(); foreach (TreeNode node in trv) { if (node.Checked == true) { listr.Add(node.Text); if (node.Nodes.Count > 0) { CheckNode(node.Nodes); } } } }可以先将选中的节点放在list里面,每个用户权限对应一个list,或者一个list数组 权限做成更新,执行tree的AfterCheck事件, 获取该节点的信息,然后更新数据就行了。这里获取的方法。 private void treeView1_AfterCheck(object sender, TreeViewEventArgs e) { if (treeView1.SelectedNode != null) {GetNodeCheckState((TreeNode)e.Node); } } private void GetNodeCheckState(TreeNode parentNode) { if (parentNode.Nodes.Count > 1) { foreach (TreeNode node in parentNode.Nodes) { if (parentNode.Checked == true) { 获取被选中的子节点。 Console.WriteLine(node.Text); } if (node.Nodes.Count > 0) GetNodeCheckState(node); } } else { Console.WriteLine(parentNode.Text); } } 11楼补充,CheckNode(node.Nodes)函数代码如下。 /// <summary> /// 功能:选中节点连带选中其所有子节点 /// 作者:liubei /// 时间:2011.10.31 16:45 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void trv_PowerFunction_AfterCheck(object sender, TreeViewEventArgs e) { if (check == false) setchild(e.Node); SetParentChecked(e.Node); check = false; } /// <summary> /// 设置子节点 /// </summary> /// <param name="node"></param> private void setchild(TreeNode node) { foreach (TreeNode child in node.Nodes) { child.Checked = node.Checked; } check = true; } /// <summary> /// 根据子节点状态设置父节点的状态 /// </summary> /// <param name="childNode"></param> private void SetParentChecked(TreeNode childNode) { if (childNode .Parent!=null) { TreeNode parentNode = childNode.Parent; if (parentNode.Text != "所有界面") { if (childNode.Checked) { parentNode.Checked = true; } else if (!childNode.Checked) { int ichecks = 0; foreach (TreeNode node in parentNode.Nodes) { if (!node.Checked) { ichecks++; } } if (ichecks == parentNode.Nodes.Count) { parentNode.Checked = false; } } } else { if (!childNode.Checked) { parentNode.Checked = false; } else if (childNode.Checked) { int ichecks = 0; foreach (TreeNode node in parentNode.Nodes) { if (node.Checked) { ichecks++; } } if (ichecks == parentNode.Nodes.Count) { parentNode.Checked = true; } } } } } #endregion byte[] 用的对吗? Sql server 2000有查询分析器可用,Access可有? TabControl的tabpage切换问题 socket编程同步异步的问题(c#) c# GDI+多个柱状和多条曲线缩放、切换 [源码1] 关于bitmap复制的效率问题 接口到底是用来干什么的啊 菜鸟问题。请帮帮我.初学者 立即揭帖:菜鸟问题(combox) 使用API GetClassName遇到麻烦,请高手指点一下(在线等待) .net C# 用RadioButtonList控件制作类似淘宝选择颜色功能 运行WinCE的exe时报错: 应用程序发生无法处理的异常。参数无效。。
是啊 我就是这样实现的 操作数据库就是
那我说下我以前实现的步骤:
首先我数据库肯定是有主外建的
你的管理权限设置里面的数据我是从数据库里面动态加载上去的
修改权限那么肯定也关联到我的userinfo表也就是用户表包括管理员
private void CheckNode(TreeNodeCollection trv)//trv是权限树的根节点下的所有子节点集合
{
List<string> listr = new List<string>();
foreach (TreeNode node in trv)
{
if (node.Checked == true)
{
listr.Add(node.Text);
if (node.Nodes.Count > 0)
{
CheckNode(node.Nodes);
}
}
}
}
可以先将选中的节点放在list里面,每个用户权限对应一个list,或者一个list数组
这里获取的方法。 private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode != null)
{GetNodeCheckState((TreeNode)e.Node); }
} private void GetNodeCheckState(TreeNode parentNode)
{
if (parentNode.Nodes.Count > 1)
{
foreach (TreeNode node in parentNode.Nodes)
{
if (parentNode.Checked == true)
{
获取被选中的子节点。
Console.WriteLine(node.Text);
}
if (node.Nodes.Count > 0)
GetNodeCheckState(node);
}
}
else
{
Console.WriteLine(parentNode.Text);
}
}
/// <summary>
/// 功能:选中节点连带选中其所有子节点
/// 作者:liubei
/// 时间:2011.10.31 16:45
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void trv_PowerFunction_AfterCheck(object sender, TreeViewEventArgs e)
{
if (check == false)
setchild(e.Node);
SetParentChecked(e.Node);
check = false;
}
/// <summary>
/// 设置子节点
/// </summary>
/// <param name="node"></param>
private void setchild(TreeNode node)
{
foreach (TreeNode child in node.Nodes)
{
child.Checked = node.Checked;
}
check = true;
} /// <summary>
/// 根据子节点状态设置父节点的状态
/// </summary>
/// <param name="childNode"></param>
private void SetParentChecked(TreeNode childNode)
{
if (childNode .Parent!=null)
{
TreeNode parentNode = childNode.Parent;
if (parentNode.Text != "所有界面")
{
if (childNode.Checked)
{
parentNode.Checked = true;
}
else if (!childNode.Checked)
{
int ichecks = 0;
foreach (TreeNode node in parentNode.Nodes)
{
if (!node.Checked)
{
ichecks++;
}
}
if (ichecks == parentNode.Nodes.Count)
{
parentNode.Checked = false;
}
}
}
else
{
if (!childNode.Checked)
{
parentNode.Checked = false;
}
else if (childNode.Checked)
{
int ichecks = 0;
foreach (TreeNode node in parentNode.Nodes)
{
if (node.Checked)
{
ichecks++;
}
}
if (ichecks == parentNode.Nodes.Count)
{
parentNode.Checked = true;
}
} }
}
}
#endregion