我在dragenter事件中用
Point targetPoint = treeViewMain.PointToClient(Point(e.X, e.Y));
TreeNode dstNode = treeViewMain->GetNodeAt(targetPoint));
好像不顶事

解决方案 »

  1.   

    在TreeView的MouseUP事件中取得节点,这样取得的应该就是最后拖拽的目的节点了。如果是TreeView的DragEnter好像也应该行吧。没做过,参考参考。
      

  2.   

    在dragover顶事了
    private: System::Void treeViewMain_DragOver(System::Object^  sender, System::Windows::Forms::DragEventArgs^  e) {
     
     //得到拖拽目的节点
     Point targetPoint = this->treeViewMain->PointToClient(Point(e->X, e->Y));
      myTreeNode ^dstNode = safe_cast<myTreeNode ^>(this->treeViewMain->GetNodeAt(targetPoint)); //得到拖拽源节点(ok)
     myTreeNode ^srcNode=safe_cast<myTreeNode ^>(e->Data->GetData("myTreeNode"));  if(!myTreeNode::determineDrag(srcNode,dstNode))
     {
    e->Effect=DragDropEffects::None;
     }
     else
     {
       this->treeViewMain->SelectedNode=dstNode;
        e->Effect=DragDropEffects::Move;
     }
     }
    };