您的位置:首页 > 编程语言 > C#

C# TreeView的帮助类

2016-03-29 15:12 405 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Desktop.Tools
{
public class TreeViewHelper
{
/// <summary>
/// 设置选中状态
/// </summary>
/// <param name="treeNode"></param>
/// <param name="b"></param>
public void CheckedParentToCheckAllChildren(TreeNode treeNode, bool b)
{

if (treeNode.Nodes.Count > 0)
{
foreach (TreeNode t in treeNode.Nodes)
{
t.Checked = b;
CheckedParentToCheckAllChildren(t, b);
}
}
else
{
treeNode.Checked = b;
}
if (treeNode.Parent != null)
{
if (treeNode.Parent.Parent != null)
{
bool d = false;
foreach (TreeNode t in treeNode.Parent.Nodes)
{
if (t.Checked == true)
{
d = true;
break;
}
}
treeNode.Parent.Checked = d;
}
}
}

/// <summary>
/// 根据节点的名字查找节点
/// </summary>
/// <param name="tree"></param>
/// <param name="name"></param>
/// <returns></returns>
public TreeNode FindNodeByName(TreeView tree, string name)
{
TreeNodeCollection tc = tree.Nodes;
TreeNode ret = null;
foreach (TreeNode t in tc)
{
ret = FindNodeByName(t,name);
if (ret != null) { break; }
}
return ret;
}

/// <summary>
/// 根据节点的名字查找节点
/// </summary>
/// <param name="t"></param>
/// <param name="name"></param>
/// <returns></returns>
public TreeNode FindNodeByName(TreeNode t, string name)
{
TreeNode ret = null;
if (t.Name == name)
{
return t;

}
else
{
if (t.Nodes.Count > 0)
{
TreeNodeCollection tc = t.Nodes;
foreach (TreeNode tn in tc)
{
ret = FindNodeByName(tn,name);
if (ret != null) { break; }

}
}
}
return ret;
}

/// <summary>
/// 根据节点显示查找节点
/// </summary>
/// <param name="tree"></param>
/// <param name="name"></param>
/// <returns></returns>
public TreeNode FindNodeByText(TreeView tree, string text)
{
TreeNodeCollection tc = tree.Nodes;
TreeNode ret = null;
foreach (TreeNode t in tc)
{
ret = FindNodeByText(t, text);
if (ret != null) { break; }
}
return ret;
}

/// <summary>
/// 根据节点显示查找节点
/// </summary>
/// <param name="t"></param>
/// <param name="name"></param>
/// <returns></returns>
public TreeNode FindNodeByText(TreeNode t, string text)
{
TreeNode ret = null;
if (t.Text == text)
{
return t;

}
else
{
if (t.Nodes.Count > 0)
{
TreeNodeCollection tc = t.Nodes;
foreach (TreeNode tn in tc)
{
ret = FindNodeByText(tn, text);
if (ret != null) { break; }

}
}
}
return ret;
}

/// <summary>
/// 获取复选框已经选中的node的显示文字
/// </summary>
/// <param name="treeView">控件</param>
/// <returns></returns>
public string GetAllCheckedNodesName(TreeView treeView)
{
string str = string.Empty;
TreeNodeCollection tnc = treeView.Nodes[0].Nodes;
foreach (TreeNode node in tnc)
{
str += GetAllCheckedNodesName(node);
}
return str;
}

/// <summary>
/// 获取复选框已经选中的node的显示文字
/// </summary>
/// <param name="treeNode">节点</param>
/// <returns></returns>
public string GetAllCheckedNodesName(TreeNode treeNode)
{
string str = string.Empty;
if (treeNode.Checked)
{
str = str + "," + treeNode.Text;
if (treeNode.Nodes.Count > 0)
{
TreeNodeCollection trc = treeNode.Nodes;
foreach(TreeNode node in trc)
{
str += GetAllCheckedNodesName(node);
}
}
}

return str;
}
}
}


由于获取复选框选中节点的名字方法返回的字符串中是由“,”分割的所以字符串的第一个也是“,”

所以还需要这样的一部分代码

TreeViewHelper helper = new TreeViewHelper();
string str= helper.GetAllCheckedNodesName(treeView1);
if(str.StartsWith(","))
{ str = str.Substring(1, str.Length - 1); }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: