VS C#Winform树视图: 我是初学者,非常感谢你的帮助。
我想取消选中之前所选节点的框。 该应用程序仅允许用户选择具有子项的节点。然后他们可以检查子节点。如果他们然后选择另一个父节点,则需要清除前面的复选框。
Parent1有子节点A,B和& C Parent2具有子节点X,Y和& ž 如果选择父1,则A,B和&检查C,然后用户选择Parent2,A,B和A的复选框。父母1的C需要被清除。
我尝试使用TreeNode tnBeforeSelect = tvFileMan.SelectedNode捕获beforeSelect事件中的SelectedNode;但是当我尝试在after select事件中使用它时,它并不存在于该上下文中。我有一个全局变量类但无法弄清楚如何添加treenode变量。我想我可以在afterCheck事件中使用类似的东西取消选中。
foreach (TreeNode tn in tnBeforeSelect)
{
tnBeforeSelect.Nodes.Checked = false;
}
答案 0 :(得分:0)
解决。位置,位置,位置。诀窍是将foreach循环放在BeforeCheck事件处理程序中,因为SelectedNode还没有改变。
if (e.Node.Nodes.Count >= 1)
{
if (tvFileMan.SelectedNode != null)
{
tvFileMan.SelectedNode.Checked = false;
foreach (TreeNode tn in tvFileMan.SelectedNode.Nodes)
{
if (tn.Nodes.Count.Equals(0))
tn.Checked = false;
}
}
}