WinForm TreeView的使用
来源:互联网 发布:javascript日历源码 编辑:程序博客网 时间:2024/05/21 12:00
1.生成节点(以加载目录下的文件和子目录为例)
DirectoryInfo dic = new DirectoryInfo(@"E:\BaiduYunDownload\MvcMusicStore-v3.0");
TreeNode node = new TreeNode(dic.Name);
settreeView3(dic, node.Nodes);
void settreeView3(DirectoryInfo dic, TreeNodeCollection node)
{
FileSystemInfo[] filesysteminfo = dic.GetFileSystemInfos();
for (int i = 0; i < filesysteminfo.Length; i++)
{
TreeNode newNode = new TreeNode(filesysteminfo[i].Name);
newNode.Tag = filesysteminfo[i].FullName;
node.Add(newNode);
if (filesysteminfo[i] is DirectoryInfo)//目录
{
DirectoryInfo newDic = new DirectoryInfo(filesysteminfo[i].FullName);
settreeView3(newDic, newNode.Nodes);//递归
}
else if (filesysteminfo[i] is FileInfo)//文件
{
// node.Nodes.Add(filesysteminfo[i].Name);
}
}
}
2.父节点选中子节点全部选中,子节点不全部选中,父节点颜色变灰,子节点全部不选中,父节点不选中(网上一位仁兄的代码)
private void treeView2_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action != TreeViewAction.Unknown)
{
SetNodeCheckStatus(e.Node, e.Node.Checked);
SetNodeStyle(e.Node);
}
}
//父节点选中子节点全部选中
private void SetNodeCheckStatus(TreeNode tn, bool Checked)
{
foreach (TreeNode tnChild in tn.Nodes)
{
tnChild.Checked = Checked;
SetNodeCheckStatus(tnChild, Checked);
}
}
// 子节点不全部选中,父节点颜色变灰,子节点全部不选中,父节点不选中
private void SetNodeStyle(TreeNode Node)
{
int nNodeCount = 0;
if (Node.Nodes.Count != 0)
{
foreach (TreeNode tnTemp in Node.Nodes)
{
if (tnTemp.Checked == true)
nNodeCount++;
}
if (nNodeCount == Node.Nodes.Count)
{
Node.Checked = true;
//Node.ExpandAll();
Node.ForeColor = Color.Black;
}
else if (nNodeCount == 0)
{
Node.Checked = false;
//Node.Collapse();
Node.ForeColor = Color.Black;
}
else
{
Node.Checked = true;
Node.ForeColor = Color.Gray;
}
}
//当前节点选择完后,判断父节点的状态,调用此方法递归。
if (Node.Parent != null)
SetNodeStyle(Node.Parent);
}
3.获取所有选中节点
private void button8_Click(object sender, EventArgs e)
{
List<TreeNode> listNodes = new List<TreeNode>();
getCheckNode(treeView2.Nodes, listNodes);
foreach (TreeNode node in listNodes)
{
str.Append(node.Text).Append("\n");
}
MessageBox.Show(str.ToString());
}
//获取所有选中节点
private void getCheckNode(TreeNodeCollection TreeNode, List<TreeNode> listNodes)
{
foreach (TreeNode node in TreeNode)
{
if (node.Checked)
{
listNodes.Add(node);
getCheckNode(node.Nodes, listNodes);
}
}
}
- WinForm TreeView的使用
- winform中treeview的一些使用心得
- winform中treeView的简单使用
- WinForm 中TreeView 控件的使用实例
- Winform TreeView的用法
- winform里的treeview
- WPF ,WinForm的TreeView
- winform的TreeView动画效果
- Winform中TreeView的绑定
- TreeView的数据绑定(winForm)
- WinForm TreeView的一点用法
- C# winform TreeView控件使用代码详解
- winform技巧—TreeView控件使用
- winform中treeView使用通用类
- winForm中应用带CheckBox的TreeView
- C#中关于TreeView的WinForm编程
- C# Winform TreeView 的一些基本用法
- treeview winform控制进度条的位置
- verilog代码的一些经验和小结
- 高效编辑器vim之标签使用
- 在linux下查看CPU的信息
- Learn Python The Hard Way-Ecercise36~40
- using namespace std(2)
- WinForm TreeView的使用
- 【深入浅出Objective-C】4.5分类(category)
- JSON数据格式
- 二分法 POJ-3104 Drying
- Starling内部的事件处理TouchProcessor
- sshd+rsync实现数据同步
- Java实现快速排序
- Ubuntu12.04安装insight-6.8
- 杭电 2018 母牛的故事