//(动作列表)删除动作 public void deleteActionElement() { if (currentActorFolder == null || currentActorElement == null || currentActionElement == null) { return; } if (!MessageBox.Show("确定删除动作 [" + currentActionElement.name + "]?", "删除动作", MessageBoxButtons.YesNo, MessageBoxIcon.Warning).Equals(DialogResult.Yes)) { return; } form_MA.historyManager.ReadyHistory(HistoryType.Actor); int index = currentActionElement.GetID(); currentActorElement.RemoveAt(index); //改变UI TreeNode parentTreeNode = treeView_Animation.Nodes[currentActorFolder.GetID()].Nodes[currentActorFolder.GetSonID(currentActorElement)]; parentTreeNode.Nodes.RemoveAt(index); int newIndex = index - 1; if (newIndex < 0 && currentActorElement.Count() > 0) { newIndex = 0; } setCurrentAction(newIndex); form_MA.historyManager.AddHistory(HistoryType.Actor); }
private void treeView_Animation_DragDrop(object sender, DragEventArgs e) { //得到拖放数据,并转换为TreeNode型 TreeNode theNode = (TreeNode)e.Data.GetData(typeof(TreeNode)); TreeView theTree = (TreeView)sender; //得到鼠标进入TreeNode,而拖放目标targetNode TreeNode targetNode = theTree.GetNodeAt(treeView_Animation.PointToClient(new Point(e.X, e.Y))); if (targetNode != null && !targetNode.Equals(theNode.Parent) && ((theNode.Level == 1 && targetNode.Level == 0) || (theNode.Level == 2 && targetNode.Level == 1))) { form_MA.historyManager.ReadyHistory(HistoryType.Actor); //先调整数据 if (theNode.Level == 1) { MActorFolder folderSrc = (MActorFolder)actorsManager[theNode.Parent.Index]; MActor actor = folderSrc[theNode.Index]; MActorFolder folderDest = (MActorFolder)actorsManager[targetNode.Index]; folderSrc.RemoveAt(theNode.Index); folderDest.Add(actor); } else if (theNode.Level == 2) { MActorFolder folderSrc = (MActorFolder)actorsManager[theNode.Parent.Parent.Index]; MActor actorSrc = folderSrc[theNode.Parent.Index]; MAction actionSrc = actorSrc[theNode.Index]; MActorFolder folderDest = (MActorFolder)actorsManager[targetNode.Parent.Index]; MActor actorDest = folderDest[targetNode.Index]; actorSrc.RemoveAt(theNode.Index); actorDest.Add(actionSrc); } //调整UI TreeNode targetParent = targetNode.Parent; //删除拖放的TreeNode theNode.Remove(); //添加到目标TreeView下 targetNode.Nodes.Add(theNode); theTree.SelectedNode = targetNode; form_MA.historyManager.AddHistory(HistoryType.Actor); } }