情况一:
      向窗体中拖放treeView1控件,在button1_Click中写treeView1.Nodes.Add(new TreeNode("根节点"))加入节点。再在treeView1_Click中写treeView1.SelectedNode.Index.ToString()得到选中节点的索引,此处单击treeView1中生成的节点时报错“未将对象引用设置到对象的实例。”请问如何解决?情况二:
      在属性中为treeView1添加节点如下:
      Root1 
          root1-1 
          root1-2
          root1-3
     Root2 
          root2-1 
          root2-2 
     Root3 
          root3-1 
                 root3-1-1     在treeView1_Click中写textBox1.Text = treeView1.SelectedNode.Index.ToString();得到选中节点的索引放入textBox1中查看,程序运行,单击Root1显示索引0,单击Root2显示索引还是0(应该是1),单击Root3显示索引1(应该是2),怎么回事?但如果双击就能得出正确索引。另外,双击root1-1,root1-2,root1-3,root2-1 ,root2-2,显示索引0,双击root3-1显示索引1,双击root3-1-1显示索引0,怎么回事?怎么索引都乱七八糟的???
          

解决方案 »

  1.   

    情况1:可能的原因是你在空白处单击(或者别的treeview的工作区),此时treeView1.SelectedNode是为空的,然后你又使用了这个属性,所以会抛异常。你可以设断点跟踪一下。
    情况2:treeView1_Click事件触发时SelectedNode属性指向的值并不会改变,除非你写代码。我理解你需要的功能,你可以在AfterSelect事件中写你的逻辑。
      

  2.   

    另外情况1的事件你可以该成NodeMouseClick
      

  3.   

    情况一: 在treeView1_Click时,你还没有SelectedNode,所以SelectedNode = null
      

  4.   

    建议你换个触发事件 treeView1_AfterCheck
      

  5.   

    情况一:
          依然存在!使用treeView1_AfterCheck事件选择生成的节点,还是得不到索引。
      

  6.   

    treeView1.Nodes.Add(new TreeNode("根节点"))方法生成的节点已经显示出来了,可是奇怪就是得不到索引!