AIMS/DocumentManagement/UI/ucClassify.cs
2022-08-23 21:12:59 +08:00

293 lines
10 KiB
C#

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
}
/// <summary>
/// 刷新目录
/// </summary>
/// <param name="txtName">节点名称</param>
public void RefreshTree(string txtName = null)
{
this.treeView1.Nodes.Clear();
//加载节点
List<PrintTemplate> listT = DocumentDAL.LoadTemplateTree();
List<PrintTemplate> 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<PrintTemplate> 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();
}
/// <summary>
/// 刷新目录
/// </summary>
/// <param name="patientId">患者Id</param>
public void RefreshTree(int patientId)
{
this.treeView1.Nodes.Clear();
//加载节点
List<PrintTemplate> listT = DocumentDAL.LoadTemplateTree(patientId);
List<PrintTemplate> 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<PrintTemplate> 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<string> ls = new List<string>();
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();
}
}
}
}