我想实现如下功能:点击node前面的加号时只展开其子节点,单击node本身时才触发其点击事件。 
    但是现在所用的NodeMouseClick事件不管点击加号(还是减号)还是node都会触发。 而用这个AfterSelect,再次点击相同项时,又无响应.哪个高手有办法,谢谢

解决方案 »

  1.   

    试试看treeView1_BeforeExpand
    BeforeExpand事件。
      

  2.   

    如果你只是希望说那些叶子节点,也就是没有下一级子节点的节点,只是要处理这种节点,可以在NodeMouseClick加一个判断:
            private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
            {
                if (e.Node.Nodes.Count == 0)
                {
                    //处理,否则不处理
                }
            }
      

  3.   

    加号(减号)也是node的一部分,所以肯定是一起触发.
    可以判断鼠标与加号(减号)的区域是否相交来单独触发.
      

  4.   

    使用 AfterCollapse 和 AfterExpand事件
      

  5.   

    楼上有理...你说通过Click拿 Position来判断行不行?
      

  6.   

    自己解决了,谢谢大家,附代码,留给需要者!!            if (e.Clicks == 1 && e.Button == MouseButtons.Left)
                {
                    var clickNode = treeView1.GetNodeAt(treeView1.PointToClient(Cursor.Position));
                    if (clickNode != null)
                    {
                        var r = clickNode.Bounds;
                        if (r.Contains(treeView1.PointToClient(Cursor.Position)))
                        {
                            MessageBox.Show(clickNode.Text + "----" + clickNode.Name);
                        }
                    }
                }