private void TV_MenuInfo_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (e.Button == MouseButtons.Right && TV_MenuInfo.SelectedNode != null)//判断你点的是不是右键 { Point ClickPoint = new Point(e.X, e.Y); TreeNode CurrentNode = TV_MenuInfo.GetNodeAt(ClickPoint); if (CurrentNode != null)//判断你点的是不是一个节点 { ContextMenuStrip formMenu = new ContextMenuStrip(); TV_MenuInfo.ContextMenuStrip = formMenu; TV_MenuInfo.SelectedNode = CurrentNode;//选中这个节点 //TV_MenuInfo.SelectedNode.ForeColor =Color.Lime; ;//节点颜色设置 ToolStripMenuItem[] formMenuItemList = new ToolStripMenuItem[5]; formMenuItemList[0] = new ToolStripMenuItem("上移", null, new EventHandler(menuinfo_next)); formMenuItemList[1] = new ToolStripMenuItem("下移", null, new EventHandler(menuinfonext)); formMenuItemList[2] = new ToolStripMenuItem("修改", null, new EventHandler(TV_MenuInfo_Click)); //---修改的方法为添加 formMenuItemList[3] = new ToolStripMenuItem("刷新", null, new EventHandler(InitMenu)); //---修改的方法为添加 formMenuItemList[4] = new ToolStripMenuItem("删除", null, new EventHandler(btn_Delete_Click)); formMenu.Items.AddRange(formMenuItemList); this.ContextMenuStrip = formMenu; } } }
private void TV_MenuInfo_DragDrop(object sender, DragEventArgs e) { TreeNode myNode = null; if (e.Data.GetDataPresent(typeof(TreeNode))) { myNode = (TreeNode)(e.Data.GetData(typeof(TreeNode))); } else { MessageBox.Show("错误操作!"); } Position.X = e.X; Position.Y = e.Y; Position = TV_MenuInfo.PointToClient(Position); TreeNode DropNode = this.TV_MenuInfo.GetNodeAt(Position); // 1.目标节点不是空。2.目标节点不是被拖拽接点的字节点。3.目标节点不是被拖拽节点本身 if (DropNode != null && DropNode.Parent != myNode && DropNode != myNode) { TreeNode DragNode = myNode; // 将被拖拽节点从原来位置删除。 myNode.Remove(); // 在目标节点下增加被拖拽节点 DropNode.Nodes.Add(DragNode); LinQBaseDao.Query("update MenuInfo set menu_otherid='" + Convert.ToInt32(DropNode.Tag) + "' where menu_id='" + Convert.ToInt32(myNode.Tag) + "'"); } // 如果目标节点不存在,即拖拽的位置不存在节点,那么就将被拖拽节点放在根节点之下 if (DropNode == null) { TreeNode DragNode = myNode; myNode.Remove(); TV_MenuInfo.Nodes.Add(DragNode); LinQBaseDao.Query("update MenuInfo set menu_otherid=0 where menu_id='" + Convert.ToInt32(myNode.Tag) + "'"); } }