PDA

View Full Version : سوال: تیک خوردن چک باکسهای treeview با تیک خوردن گره والد



طبیب دل
یک شنبه 29 آذر 1394, 21:30 عصر
با سلام به دوستان
چطوری میشه چک باکسهای گره فرزند در treeview را با فعال شدن گره والد فعال کرد؟
سرچ کردم ولی جواب پیدا نکردم
با تشکر

khokhan
یک شنبه 29 آذر 1394, 21:57 عصر
با سلام به دوستان
چطوری میشه چک باکسهای گره فرزند در treeview را با فعال شدن گره والد فعال کرد؟
سرچ کردم ولی جواب پیدا نکردم
با تشکر
یه متد برای تشخیص والد بودن گره :

private void SelectParents(TreeNode node, Boolean isChecked)
{
var parent = node.Parent;

if (parent == null)
return;

if (!isChecked && HasCheckedNode(parent))
return;

parent.Checked = isChecked;
SelectParents(parent, isChecked);
}
ویه متد برای انتخاب همه گره های فرزند در صورت تیک زدن گره والد :


private void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
{

foreach (TreeNode node in treeNode.Nodes)
{

node.Checked = nodeChecked;

if (node.Nodes.Count > 0)
{

// درصورتی که نودی دارای فرزند بود متد انتخاب همه صدا زده می شه.

this.CheckAllChildNodes(node, nodeChecked);

}

}

}
ویه دونه متغیر از نوع بولین :

private bool HasCheckedNode(TreeNode node)
{
return node.Nodes.Cast<TreeNode>().Any(n => n.Checked);
}
و اجرای سناریو در رویداد AfterCheck تری ویو :


private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action != TreeViewAction.Unknown)
{

if (e.Node.Nodes.Count > 0)
{

this.CheckAllChildNodes(e.Node, e.Node.Checked);
}

}

SelectParents(e.Node, e.Node.Checked);

}