نوشته شده توسط
طبیب دل
با سلام به دوستان
چطوری میشه چک باکسهای گره فرزند در 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);
}