【发布时间】:2020-02-19 16:59:15
【问题描述】:
我正在设置一个新表单,并且我在 TreeViewNodes 检查和取消检查子项时遇到了一些问题。在这个short clip 中更容易看到问题
通常它可以正常工作,但有时会卡住(我认为与选择有冲突,但我不确定)并且方法没有正确应用。
我有这个方法来检查和取消选中孩子:
private void Treeview_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action != TreeViewAction.Unknown)
if (e.Node.Checked)
{
CheckAll(e.Node.Nodes);
}
if (e.Node.Checked == false)
{
Uncheckall(e.Node.Nodes);
}
}
public void Uncheckall(TreeNodeCollection nodes)
{
foreach (TreeNode node in nodes)
{
node.Checked = false;
foreach (TreeNode node1 in node.Nodes)
{
node1.Checked = false;
foreach (TreeNode node2 in node1.Nodes)
{
node2.Checked = false;
}
}
}
}
public void CheckAll(TreeNodeCollection nodes)
{
foreach (TreeNode node in nodes)
{
node.Checked = true;
foreach (TreeNode node1 in node.Nodes)
{
node1.Checked = true;
foreach (TreeNode node2 in node1.Nodes)
{
node2.Checked = true;
}
}
}
}
我已经尝试将选择设为空:
private void TreeView_Select(object sender, TreeViewEventArgs e)
{
TreeView.SelectedNode = null;
}
但问题仍然存在。有任何想法吗?谢谢
【问题讨论】:
-
我在这里没有找到答案。我想我知道如何正确地遍历所有节点,但我仍然遇到错误选择的问题。见剪辑。