选中/取消选中TreeView节点时要捕获的事件

时间:2013-10-03 20:22:04

标签: c# winforms treeview

我在TreeView中有一个包含5个子节点的节点cbNode5,我试图以某种方式捕获cbNode5的检查和取消选中,这样我就可以标记子节点并选中/取消选中以匹配父节点。我知道如何通过节点来检查/取消选中子节点,但我无法弄清楚是什么,以及如何捕获当用户通过鼠标点击或键盘检查点头的复选框时触发的事件。

我已经尝试过AfterCheck事件,但它似乎没有工作(我知道将复选框设置为true的行,因为它在其他事件下运行正常):

private void tvSteps_AfterCheck(object sender, TreeViewEventArgs e)
{
    tvSteps.Nodes["cbStep1"].Checked = true;
}

3 个答案:

答案 0 :(得分:3)

查看AfterCheck事件......

AfterCheck()事件对我来说很好:

    private void tvSteps_AfterCheck(object sender, TreeViewEventArgs e)
    {
        if (e.Node.Name == "cbNode5")
        {
            foreach (TreeNode tn in e.Node.Nodes)
            {
                tn.Checked = e.Node.Checked;
            }
        }
    }

当我选中/取消选中cbNode5时,其子项会选中/取消选中以匹配它。

您确定使用的密钥是否正确?

答案 1 :(得分:0)

答案 2 :(得分:0)

我想请注意,我通过进入我的TreeViewForm.Designer.CSInitializeComponent函数并将以下行添加到导致问题的treeview对象的属性中来解决此问题:

this.treeView1.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterCheck);

请注意,您的对象名称将与我自己的名称不同。 出于某种原因,AfterSelect事件处理程序以编程方式添加到我的表单的Designer.CS文件中,但我的AfterCheck事件处理程序没有。