#region 选择收信人
private void advTree1_NodeClick(object sender, TreeNodeMouseEventArgs e)
{
string names = "";
string ids = "";
string groups = "";
if (e.Node.Checked)
{
SelectNode(e.Node, true);
UpdateParentNode(e.Node);
SelectValue(ref ids, ref names, ref groups);
}
else
{
SelectNode(e.Node, false);
UpdateParentNode(e.Node);
SelectValue(ref ids, ref names, ref groups);
}
txtSendName.Text = names;
usernames = names;
groupnames = groups;
group_user_ids = ids;
}
//遍历选中状态的Name,ID(对应node里面的tagstring)
private void SelectValue(ref string ids, ref string names, ref string groups)
{
foreach (DevComponents.AdvTree.Node child in node1.Nodes)
{
for (int i = 0; i < child.Nodes.Count; i++)
{
if (child.Nodes[i].CheckState == CheckState.Checked)
{
//用户名插入
names += child.Nodes[i].Text + ",";
//插入组id(test改为组名)名以及用户Id
ids += child.TagString + "_" + child.Nodes[i].TagString + ",";
//ids += child.Text + "_" + child.Nodes[i].TagString + ",";
groups += child.Text + "_" + child.Nodes[i].Text + ",";
}
}
}
}
#endregion
#region 节点递归
//递归选择子节点
private void SelectNode(DevComponents.AdvTree.Node nod, bool flag)
{
if (nod.HasChildNodes)
{
foreach (DevComponents.AdvTree.Node child in nod.Nodes)
{
child.Checked = flag;
SelectNode(child, flag);
}
}
}
//递归更新父节点
private void UpdateParentNode(DevComponents.AdvTree.Node nod)
{
if (nod != node1)
{
bool sg = true;
foreach (DevComponents.AdvTree.Node cnod in nod.Parent.Nodes)
{
if (!cnod.Checked)
{
sg = false;
break;
}
}
if (sg)
{
nod.Parent.CheckState = CheckState.Checked;
UpdateParentNode(nod.Parent);
}
else
{
nod.Parent.CheckState = CheckState.Indeterminate;
UpdateParentNode(nod.Parent);
}
}
}
#endregion