using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using DocumentManagement.Properties; namespace DocumentManagement { [DisplayName("文书目录控件")] [Description("文书目录")] [ToolboxItem(true)] public partial class ucClassify : UserControl { [BrowsableAttribute(true), Description("是否为只读模式")] public bool IsReadOnly { get; set; } [BrowsableAttribute(false)] public TreeView tv { get { return this.treeView1; } } [BrowsableAttribute(false)] public ContextMenuStrip ms { get { return this.contextMenuStrip1; } } public ucClassify() { InitializeComponent(); #if DEBUG TreeNode t = new TreeNode("测试项目1"); t.Nodes.Add(new TreeNode("测试子项目1")); TreeNode t1 = new TreeNode("测试项目2"); t1.Nodes.Add(new TreeNode("测试子项目2")); t1.Nodes.Add(new TreeNode("测试子项目3")); treeView1.Nodes.Add(t); treeView1.Nodes.Add(t1); #endif } /// /// 刷新目录 /// /// 节点名称 public void RefreshTree(string txtName = null) { this.treeView1.Nodes.Clear(); //加载节点 List listT = DocumentDAL.LoadTemplateTree(); List listP = listT.Where(x => x.ParentId == 0).OrderBy(x => x.TemplateOrder).ToList(); foreach (var item in listP) { TreeNode node = new TreeNode(item.XmlFileName); node.Name = item.Id.ToString(); node.Tag = item; treeView1.Nodes.Add(node); node.ImageIndex = 0; List listC1 = listT.Where(x => x.ParentId == item.Id).OrderBy(x => x.TemplateOrder).ToList(); foreach (var item2 in listC1) { TreeNode node2 = new TreeNode(item2.XmlFileName); node2.Name = item2.Id.ToString(); node2.Tag = item2; node2.ImageIndex = 2; node2.SelectedImageIndex = 2; node.Nodes.Add(node2); if (txtName != null && txtName == node2.Name) { treeView1.SelectedNode = node2; } } } this.treeView1.ExpandAll(); this.treeView1.Refresh(); } /// /// 刷新目录 /// /// 患者Id public void RefreshTree(int patientId) { this.treeView1.Nodes.Clear(); //加载节点 List listT = DocumentDAL.LoadTemplateTree(patientId); List listP = listT.Where(x => x.ParentId == 0).OrderBy(x => x.TemplateOrder).ToList(); foreach (var item in listP) { TreeNode node = new TreeNode(item.XmlFileName); node.Name = item.Id.ToString(); node.Tag = item.PrintDocumentId; treeView1.Nodes.Add(node); node.ImageIndex = 0; List listC1 = listT.Where(x => x.ParentId == item.Id).OrderBy(x => x.TemplateOrder).ToList(); foreach (var item2 in listC1) { TreeNode node2 = new TreeNode(item2.XmlFileName); node2.Name = item2.Id.ToString(); node2.Tag = item2.PrintDocumentId; node2.ImageIndex = item2.PrintDocumentId > 0 ? 1 : 2; node2.SelectedImageIndex = item2.PrintDocumentId > 0 ? 1 : 2; node.Nodes.Add(node2); } } this.treeView1.ExpandAll(); this.treeView1.Refresh(); } void treeView1_MouseClick(object sender, MouseEventArgs e) { TreeNode node = treeView1.SelectedNode; if (e.Button == MouseButtons.Right) { if (node != null && node.Parent == null) { this.添加子目录ToolStripMenuItem.Enabled = true; this.删除当前节点ToolStripMenuItem.Enabled = false; } else { this.添加子目录ToolStripMenuItem.Enabled = false; this.删除当前节点ToolStripMenuItem.Enabled = true; } contextMenuStrip1.Show(Control.MousePosition.X, Control.MousePosition.Y); } } void treeView1_ItemDrag(object sender, ItemDragEventArgs e) { if (((TreeNode)e.Item).Parent == null) { return; } DoDragDrop(e.Item, DragDropEffects.Move); } void treeView1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(TreeNode))) e.Effect = DragDropEffects.Move; else e.Effect = DragDropEffects.None; } void treeView1_DragDrop(object sender, DragEventArgs e) { TreeNode moveNode = (TreeNode)e.Data.GetData(typeof(TreeNode)); Point p = treeView1.PointToClient(new Point(e.X, e.Y)); TreeNode DropNode = this.treeView1.GetNodeAt(p); if (DropNode == null) { return; } if (DropNode.Parent != null) { DropNode = DropNode.Parent; } // 1.目标节点不是被拖拽接点的子节点。2.目标节点不是被拖拽节点本身 if (DropNode.Parent != moveNode && DropNode != moveNode) { TreeNode tempNode = moveNode; // 将被拖拽节点从原来位置删除。 moveNode.Remove(); // 在目标节点下增加被拖拽节点 DropNode.Nodes.Add(tempNode); DropNode.Expand(); } // 如果目标节点不存在,即拖拽的位置不存在节点,那么就将被拖拽节点放在根节点之下 //if (DropNode == null) //{ // TreeNode DragNode = moveNode; // moveNode.Remove(); // treeView1.Nodes.Add(DragNode); //} } private void 下移ToolStripMenuItem_Click(object sender, EventArgs e) { if (treeView1.SelectedNode == null) { MessageBox.Show("请选择一个节点!"); return; } if (treeView1.SelectedNode.NextNode == null) { MessageBox.Show("当前节点已是末节点!"); return; } TreeNode Node = treeView1.SelectedNode; TreeNode NextNode = Node.NextNode; TreeNode NewNode = (TreeNode)Node.Clone(); if (Node.Parent == null) { treeView1.Nodes.Insert(NextNode.Index + 1, NewNode); } else { Node.Parent.Nodes.Insert(NextNode.Index + 1, NewNode); } Node.Remove(); treeView1.SelectedNode = NewNode; RefreshOrders(NewNode); } private void RefreshOrders(TreeNode node) { TreeNode pNode = node.Parent; List ls = new List(); if (pNode == null) { for (int i = 0; i < this.treeView1.Nodes.Count; i++) { ls.Add(treeView1.Nodes[i].Name); } } else { for (int i = 0; i < pNode.Nodes.Count; i++) { ls.Add(pNode.Nodes[i].Name); } } if (ls.Count > 0) { DocumentDAL.SetTempOrders(ls); } } private void 上移ToolStripMenuItem_Click(object sender, EventArgs e) { if (treeView1.SelectedNode == null) { MessageBox.Show("请选择一个节点!"); return; } if (treeView1.SelectedNode.PrevNode == null) { MessageBox.Show("当前节点已是第一节点!"); return; } TreeNode Node = treeView1.SelectedNode; TreeNode PreNode = Node.PrevNode; TreeNode NewNode = (TreeNode)Node.Clone(); if (Node.Parent == null) { treeView1.Nodes.Insert(PreNode.Index, NewNode); } else { Node.Parent.Nodes.Insert(PreNode.Index, NewNode); } Node.Remove(); treeView1.SelectedNode = NewNode; RefreshOrders(NewNode); } private void 新建同级目录ToolStripMenuItem_Click(object sender, EventArgs e) { frmTitle f = new frmTitle(); f.model = new PrintTemplate(); f.ShowDialog(); } private void ucClassify_Load(object sender, EventArgs e) { ImageList myImageList = new ImageList(); myImageList.Images.Add(Resources.父节点); myImageList.Images.Add(Resources.完成2); myImageList.Images.Add(Resources.未完成2); treeView1.ImageList = myImageList; if (!IsReadOnly) { treeView1.AllowDrop = true; treeView1.ItemDrag += new ItemDragEventHandler(treeView1_ItemDrag); treeView1.DragEnter += new DragEventHandler(treeView1_DragEnter); treeView1.DragDrop += new DragEventHandler(treeView1_DragDrop); treeView1.MouseClick += new MouseEventHandler(treeView1_MouseClick); //RefreshTree(); } } } }