各位,c#中的treeview控件有一个AfterCheck事件,当我改变某项的checked属性时会触发此事件,可当我同时改变此项的所有子项的checked属性时也会触发AfterCheck事件,这样就会多次触发这个事件,大大降低了程序的效率,如何不让子项去触发这个事件?我想在这个事件中先判断是不是我单击的那个节点,不是则返回,但我单击的那个节点该如何保存起来呢?

解决方案 »

  1.   

    不明白你具体的限制条件,如果只是控制子Node不触发的话可以通过Level来控制:private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
            {
                if(e.Node.Level > 0)
                  MessageBox.Show("aaa");
            }
      

  2.   

    如果你改变的是同一层的节点,那就得用变量来控制
    如果改变的是不同层的节点,那可以用Node.Level属性来判断
      

  3.   

    上面的code是跟Node不触发,反正可以读到Node的Level,也可以读取Node的别的属性.
      

  4.   

    用if(treeView1.SelectedNode.Name==“你要的节点名称或者指定哪个层的节点”.name)来判断
      

  5.   

    话说 TreeViewEventArgs 参数被你浪费掉了~~
      

  6.   

    兄弟,我去年发的帖子,事隔这么久还被你给挖出来了,感动啊%>_<%