treeview单击一个节点后,就获取节点的tag属性值,然后根据tag值执行程序,要用哪个事件呢?(AfterSelect好象只有第一次有效呀?)
----------------------------------------
我发现,如果在 afterselect事件中写代码,第二次点同一个节点,事件不会触发。除非换单击别的节点才能继续触发afterselect事件,
可以我想要的效果是,每单击一次节点就执行代码。比如,我的部门放在 treeview 中,每个节点就是部门,我想只要单击一次节点,就按部门进行查询。可是我不知用哪个事件可以达到我的要求呢?如果用 afterselect ,有一个问题,就是对于同一个节点,如果第二次单击,则不会触发事件。我必须任意点一下别的节点,然后再回来,否则treeview的 afterselect 事件不会触发。如果用 nodemouseclick事件,有一个问题,就是当前节点如何选呢?我用 selectednode 属性选择,我发现,selectednode总是上一次点击的哪个节点呀,可是我想获取本次点击的节点呢?如何取得本次单击的节点的 tag 值呢?

解决方案 »

  1.   

     private void TreeView1_AfterSelect(object sender, TreeViewEventArgs e)
            {
      MessageBox.Show(TreeView1.SelectedNode.Name);
    MessageBox.Show(TreeView1.SelectedNode.Text);
    }希望对你有帮助
      

  2.   

    请看我的问题,谢谢。
    如果用 afterselect ,有一个问题,就是对于同一个节点,如果第二次单击,则不会触发事件。我必须任意点一下别的节点,然后再回来,否则treeview的 afterselect 事件不会触发。
    你试试,连续两次点击同一个节点,第二次,会不会触发 afterselect 事件???
      

  3.   

    NodeMouseClick事件里参数 e
                MessageBox.Show(e.Node.Tag);
      

  4.   


    假如定义TreeNode的时候设置它的Tag值
    Tag.js="XX";
    Tag.LB="XX";
    TreeNodeTag Ttag =new TreeNodeTag();//先定义tag字段实例//单击节点事件
    private void tevUserArea_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
            {
                Ttag = tevUserArea.SelectedNode.Tag as TreeNodeTag;
                string ID= Ttag.ID.Trim();
    string js= Ttag.js.Trim();
    string LB= Ttag.LB.Trim();
                MessageBox.Show(LB
            }
      

  5.   

    谢谢老师指教,这种方法确实可以。但是,我不理解,selectednode属性,为何取不到当前节点呢?却总是“上一次”的“当前节点”
      

  6.   

    treeView.SelectedNode.Index.ToString();//获取当前的节点
      

  7.   

    selectednode属性 触发事件前还没改变呢.