int i;
for(int x=0;x<MyTreeView1.Nodes.Count-1;x++)
{
     if (MyTreeView1.Nodes[x].Text=="张三")
        {
        x=MyTreeView1.Nodes[x].Index;  
        }}
用x 来区分

解决方案 »

  1.   

    单独执行if (!e.Node.Checked && e.Node.Parent != null)
     {
         e.Node.Parent.Checked = false;        //...........(2)
      }或者是foreach (TreeNode node in e.Node.Nodes)
    {
        node.Checked = e.Node.Checked;         //........(1)
    }都没有问题,但是如果同时有就会发生错误,因为 e.Node.Parent.Checked = false;  和node.Checked = e.Node.Checked; 都会触发afterchecked事件
      

  2.   

    加上一句判断就没问题了!if (e.Node.Checked)
    {
         foreach (TreeNode node in e.Node.Nodes)
         {
            node.Checked = e.Node.Checked;         //........(1)
         }
    }if (!e.Node.Checked && e.Node.Parent != null)
    {
    e.Node.Parent.Checked = false;        //...........(2)
    }
      

  3.   

    以上好象都不行,用e.Action != TreeViewAction.UnKnown 来屏闭由赋值引发的afterchecked事件 。
      

  4.   

    CSTerry(Terry) 的说法是对的,但是 光check一下总是让人觉得不放心。 jkflyfox(飞狐) 的方法是可行的,3ks。