using System; using System.Data; using System.Drawing.Printing; using System.IO; using System.Windows.Forms; using Cyberpipe.HFS_Forms; namespace Cyberpipe.HFS_logicfile { class HFS_Affair { #region 公共变量 // public Point CPoint; //添加命名空间using System.Drawing; public static string BaseNode = "";//设录文件夹的根节点名称 public string TempNode = "";//临时根节点名称 public static int UserSign = 0;//用户的ID号 //public static string IfSign = "";//查找当前用户的条件 public static int Fclass = 0;//窗体的类型:1为复制,2为删 public static string Redact_T = ""; public static string Redact_N = ""; //treeview接点的名称 public static string Redact_M = ""; public static string Redact_D = ""; public static ListView ADD_LV = new ListView(); public static string tablename = "HFS"; #endregion #region /// <summary> /// 查询结果在View里显示 /// </summary> /// <param LV="ListView">ListView控件</param> /// <param TV="TreeView">TreeView控件</param> /// <param TF="bool">用于判断显示指定的控件</param> public void Resulttoshow(TreeView TV, ListView LV_AF, bool TF, DataTable table) { TV.Dock = DockStyle.Fill;//使TreeView控件最大化 TV.Visible = !TF;//是否显示TreeView控件 LV_AF.Dock = DockStyle.Fill;//使ListView控件最大化 LV_AF.Visible = true;//是否显示ListView控件 ShowResultTree(TV, table); } #endregion #region 调用导入导出编辑窗体 /// <summary> /// 调用导入导出编辑窗体 /// </summary> /// <param STV="TreeView">查询的节点</param> /// <param DLV="ListView">显示查找的文件</param> /// <param FName="string">查找的文件名</param> public void Find_File(TreeView STV, ListView DLV, string FName) { STV.Dock = DockStyle.Fill;//使TreeView控件最大化 STV.Visible = true;//是否显示TreeView控件 //DLV.Visible = false; DataSet DS = new DataSet(); if (FName == "") { MessageBox.Show("查找文件名不能为空。"); return; } //string sql = "select * from casic_hfs where NODENAME like '%"+FName //+"%' and NODETYPE = 0"; DS = OledbHelper.getDataSet("select * from casic_hfs where NODENAME like '%" + FName + "%' and NODETYPE = 0", "casic_hfs"); //DS = OledbHelper.getDataSet(sql,"casic_hfs"); if (DS.Tables[0].Rows.Count == 0) { MessageBox.Show("没有查到相关文件。"); return; } ShowResultTree(STV, DS.Tables[0]); } #endregion #region 在文件列表中添加根节点 /// <summary> /// 在文件列表中添加根节点 /// </summary> /// <param TV="TreeView">TreeView控件</param> /// <param Nodename="string">要添加的根节点名称</param> public void ShowResultTree(TreeView TV, DataTable table) { //int temp = 0; //TempNode = ""; //TV.Nodes.Clear();//清空TreeView控件 //TreeNode TNode = new TreeNode(); //string[] projects = new string[table.Rows.Count]; //string[] filenames = new string[table.Rows.Count]; //for (int i = 0; i < table.Rows.Count; i++) //{ // projects[i] = table.Rows[i][3].ToString(); // filenames[i] = table.Rows[i][2].ToString(); // Cyberpipe.HFS_logicfile.HFS_Affair.BaseNode = projects[i].Trim(); // if (BaseNode.Trim() != TempNode.Trim()) // { // TNode = TV.Nodes.Add(BaseNode);//向TreeView控件中添加根节点 // TNode.Nodes.Add(filenames[i]);//添加该节点 // TempNode = BaseNode.Trim(); // } // else { // TNode.Nodes.Add(filenames[i]);//添加该节点 // } //} int temp = 0; TempNode = ""; TV.Nodes.Clear();//清空TreeView控件 string[] projects = new string[table.Rows.Count]; string[] filenames = new string[table.Rows.Count]; TreeNode RNode = null; TreeNode YNode = null; for (int i = 0; i < table.Rows.Count; i++) { projects[i] = table.Rows[i][3].ToString(); filenames[i] = table.Rows[i][2].ToString(); BaseNode = projects[i].Trim(); if (BaseNode.Trim() != TempNode.Trim()) { RNode = new TreeNode(BaseNode);//向TreeView控件中添加根节点 YNode = new TreeNode(filenames[i]);//加个叶子 YNode.Tag = table.Rows[i][0].ToString(); RNode.Nodes.Add(YNode); TempNode = BaseNode.Trim(); temp = 0; } else { YNode = new TreeNode(filenames[i]);//加个叶子 YNode.Tag = table.Rows[i][0].ToString(); RNode.Nodes.Add(YNode); temp++; } if ((temp == 0) || (table.Rows.Count == 1)) { TV.Nodes.Add(RNode); } } } #endregion #region 切换文件列表和资料集 /// <summary> /// 切换文件列表和资料集 /// </summary> /// <param LV="ListView">ListView控件</param> /// <param TV="TreeView">TreeView控件</param> /// <param TF="bool">用于判断显示指定的控件</param> public void Itemtoshow(ListView LV, TreeView TV, ListView LV_AF, bool TF) //用于显示不用专题图的内容 { LV.Dock = DockStyle.Fill;//使ListView控件最大化 TV.Dock = DockStyle.Fill;//使TreeView控件最大化 LV.Visible = TF;//是否显示ListView控件 TV.Visible = !TF;//是否显示TreeView控件 LV_AF.Dock = DockStyle.Fill;//使ListView控件最大化 LV_AF.Visible = true;//是否显示ListView控件 if (TF)//调用自定义方法Data_List获取资集中的名称,并显示在ListView控件中 { string sql = "select casic_hfs.\"NODENAME\",casic_hfs.\"NODEID\",casic_hfs.\"NODETYPE\" from " + "casic_hfs where casic_hfs.\"NODETYPE\"=2"; Data_List(LV,OledbHelper.getDataSet(sql,"casic_hfs")); //Data_List(LV, OledbHelper.getDataSet("select NodeName,NodeID,NodeType from HFS where NodeType=2", "HFS")); } } #endregion #region 向资料集中的添加名称 /// <summary> /// 向资料集中的添加名称 /// </summary> /// <param LV="ListView">ListView控件</param> /// <param DS="DataSet">返回查找的数据集</param> public void Data_List(ListView LV, DataSet DS) //Form或MouseEventArgs添加命名空间using System.Windows.Forms; { LV.Items.Clear();//清空所有项的集合 LV.Columns.Clear();//清空所有列的集合 LV.GridLines = true;//在各数据之间形成网格线 LV.View = View.Details;//显示列名称 LV.FullRowSelect = true;//在单击某项时,对其进行选中 LV.Columns.Add("项目名称", 200, HorizontalAlignment.Center);//设置列标头的名称及大小 //添加指定列的信息 for (int i = 0; i < DS.Tables[0].Rows.Count; i++) { ListViewItem lvi = new ListViewItem(DS.Tables[0].Rows[i][0].ToString());//实例化一个项 lvi.Tag = DS.Tables[0].Rows[i][1]; LV.Items.Add(lvi);//添加列信息 } } #endregion #region 窗体设置 /// <summary> /// 窗体设置 /// </summary> /// <param Frm="Form">窗体</param> public void FrmSetUp(Form Frm) //Form或MouseEventArgs添加命名空间using System.Windows.Forms; { //Frm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;//去掉窗体的边框 Frm.StartPosition = FormStartPosition.CenterScreen;//使窗体居中 } #endregion #region 切换文件列表和资料集 /// <summary> /// 切换文件列表和资料集 /// </summary> /// <param LV="ListView">ListView控件</param> /// <param TV="TreeView">TreeView控件</param> /// <param TF="bool">用于判断显示指定的控件</param> public void Itemtoshow(ListView LV, TreeView TV, ListView LV_AF, ToolStripLabel TSL, bool TF) //用于显示不用专题图的内容 { LV.Dock = DockStyle.Fill;//使ListView控件最大化 TV.Dock = DockStyle.Fill;//使TreeView控件最大化 LV.Visible = TF;//是否显示ListView控件 TV.Visible = !TF;//是否显示TreeView控件 LV_AF.Dock = DockStyle.Fill;//使ListView控件最大化 LV_AF.Visible = true;//是否显示ListView控件 if (TF)//调用自定义方法Data_List获取资集中的名称,并显示在ListView控件中 { string sql = "select casic_hfs.\"NODENAME\",casic_hfs.\"NODEID\",casic_hfs.\"NODETYPE\" from" + "casic_hfs where casic_hfs.\"NODETYPE\"=2"; Data_List(LV,OledbHelper.getDataSet(sql,tablename)); //Data_List(LV, OledbHelper.getDataSet("select NodeName,NodeID,NodeType from HFS where NodeType=2", tablename)); } } public void Itemtoshow(ListView LV, TreeView TV,bool TF,int mark) //用于显示不同的专题图项目 { LV.Dock = DockStyle.Fill;//使ListView控件最大化 TV.Dock = DockStyle.Fill;//使TreeView控件最大化 LV.Visible = TF;//是否显示ListView控件 TV.Visible = !TF;//是否显示TreeView控件 if (TF)//调用自定义方法Data_List获取资集中的名称,并显示在ListView控件中 { string sql = "select casic_hfs.\"NODENAME\",casic_hfs.\"NODEID\",casic_hfs.\"NODETYPE\" from " + " casic_hfs where casic_hfs.\"NODETYPE\"=2"; Data_List(LV,OledbHelper.getDataSet(sql,tablename)); //Data_List(LV, OledbHelper.getDataSet("select NodeName,NodeID,NodeType from HFS where NodeType=2", tablename)); } } #endregion #region 在文件列表中添加根节点 /// <summary> /// 在文件列表中添加根节点 /// </summary> /// <param TV="TreeView">TreeView控件</param> /// <param Nodename="string">要添加的根节点名称</param> public void ShowTree(TreeView TV, string Nodename) { TreeNode TNode = new TreeNode(); if (BaseNode.Trim() != TempNode.Trim())//判断资料集文件名是否为当前根节点名称 { TV.Nodes.Clear();//清空TreeView控件 TNode = TV.Nodes.Add(Nodename);//向TreeView控件中添加根节点 //在数据库中查找当前根节点的信息 DataSet DSet = OledbHelper.getDataSet("select NODEID,NODEPID,NODENAME,NODETYPE from casic_hfs" + " where NODENAME='" + Nodename + "'", "casic_hfs"); //string sql = "select NODEID,NODEPID,NODENAME,NODETYPE from casic_hfs where NODENAME = '" // +Nodename+"'"; ////DataSet DSet = OledbHelper.getDataSet("select NodeID,NodePID,NodeName,NodeType from HFS where NodeName='" + Nodename + "'", "HFS"); //DataSet DSet = OledbHelper.getDataSet(sql,"casic_hfs"); TNode.Tag = DSet.Tables[0].Rows[0][0];//获取当前文件的主ID号 TNode.ImageIndex = 0;//设置当前节点的图片 TempNode = BaseNode.Trim();//将当前根节点的名称赋给临时变量 ADD_NullTreeNode(TV, TNode, 0);//调用自定义方法ADD_NullTreeNode } } #endregion #region 添加子节点 /// <summary> /// 添加子节点 /// </summary> /// <param TV="TreeView">TreeView控件</param> /// <param ANode="TreeNode">当前节点</param> public void ADD_TreeNode(TreeView TV, TreeNode ANode) { //在数据库中查找当前节点下的所有子节点 string sql = "select NODEID,NODEPID,NODENAME,NODETYPE from casic_hfs where NODEPID = "+ ANode.Tag; DataSet DSet = OledbHelper.getDataSet(sql, tablename); //DataSet DSet = OledbHelper.getDataSet("select NodeID,NodePID,NodeName,NodeType from HFS where NodePID=" + ANode.Tag, tablename); if (DSet.Tables[0].Rows.Count > 0)//当查找的行数大于0时 { ANode.Nodes.Clear();//清空当前节点下的所有子节点 int TypeIn = 0;//定义一个局部变量,用于存放指定数据的辅ID号 for (int i = 0; i < DSet.Tables[0].Rows.Count; i++)//遍历数据表中的所有数据 { TreeNode SonNode = new TreeNode(DSet.Tables[0].Rows[i][2].ToString());//实例化一个具有当前节点名称的节点 SonNode.Tag = DSet.Tables[0].Rows[i][0];//在该节点的Tag属性中存放当前信息的主ID号 TypeIn = int.Parse(DSet.Tables[0].Rows[i][3].ToString());//存放当前信息的类型 if (TypeIn == 0)//设置当前节点的图片 SonNode.ImageIndex = 2; else SonNode.ImageIndex = 0; ANode.Nodes.Add(SonNode);//添加该节点 ADD_NullTreeNode(TV, SonNode, 1);//调用自定义方法ADD_NullTreeNode } } else { ANode.Nodes.Clear();//清空子节点 } } #endregion #region 打印 public void Print(int MainID, string MainName,PrintDialog printdialog,PrintDocument printdocument) { DataSet DSet = new DataSet();//实例化一个DataSet对象 string wdir = ""; int ty = -1; string sql = "select NODEID,NODEPID,NODEPATH,NODETYPE from casic_hfs where NODEID = " + MainID; DSet = OledbHelper.getDataSet(sql, tablename); // DSet = OledbHelper.getDataSet("select NodeID,NodePID,NodePath,NodeType from HFS where NodeID=" + MainID, tablename); ty = int.Parse(DSet.Tables[0].Rows[0][3].ToString()); wdir = DSet.Tables[0].Rows[0][2].ToString(); if (ty == 0) { if (printdialog.ShowDialog() == DialogResult.OK) { printdocument.Print(); } } else { MessageBox.Show("请选择图片进行打印"); } } #endregion #region 显示当前文件夹下的所有文件 /// <summary> /// 显示当前文件夹下的所有文件 /// </summary> /// <param MainID="int">当前项的主ID号</param> /// <param MainName="string">当前项的名称</param> /// <param LV="ListView">ListView控件</param> /// <param p="int">操作类型</param> public void Show_AllFile(int MainID, string MainName, ListView LV,PictureBox PB, int p) { LV.Dock = DockStyle.Fill;//使ListView控件最大化 LV.Visible = true; DataSet DSet = new DataSet();//实例化一个DataSet对象 string wdir = ""; int ty = -1; string sql = "select NODEID,NODEPID,NODEPATH,NODETYPE,NODENAME from casic_hfs where NODEID="+ MainID; DSet = OledbHelper.getDataSet(sql, "casic_hfs"); //DSet = OledbHelper.getDataSet("select NodeID,NodePID,NodePath,NodeType,NodeName from HFS where NodeID=" + MainID, "HFS"); ty = int.Parse(DSet.Tables[0].Rows[0][3].ToString()); wdir = DSet.Tables[0].Rows[0][2].ToString(); string wdirall = Application.StartupPath; wdirall = wdirall + "\\Files\\HFS\\" + wdir + "\\" + DSet.Tables[0].Rows[0][4]; if (ty == 0) { } if (ty == 0 && p == 2) { try { } catch (Exception ex) { MessageBox.Show("文件无法打开。"); } } else { //在数据库中获取当前文件夹的信息 string sql2 = "select NODEID,NODEPID,NODENAME,NODETYPE from casic_hfs where casic_hfs.\"NODEPID\"="+MainID; //DSet = OledbHelper.getDataSet("select NodeID,NodePID,NodeName,NodeType from HFS where NodePID=" + MainID, "HFS"); DSet =OledbHelper.getDataSet(sql2,"casic_hfs"); if (DSet.Tables[0].Rows.Count > 0)//当数据表的行数大于0时 { LV.Items.Clear();//清空ListView控件 //当前文件夹下的子文件夹和文件添加到ListView控件中 for (int i = 0; i < DSet.Tables[0].Rows.Count; i++) { ListViewItem lvi = new ListViewItem(DSet.Tables[0].Rows[i][2].ToString());//实例化一个项 lvi.Tag = int.Parse(DSet.Tables[0].Rows[i][0].ToString()); if (int.Parse(DSet.Tables[0].Rows[i][3].ToString()) == 0)//设置各项的图片 lvi.ImageIndex = 2; else lvi.ImageIndex = 0; LV.Items.Add(lvi);//添加列信息 } } } } #endregion #region 在显示节点时,查找是否有子节点 /// <summary> /// 查找是否有子节点 /// </summary> /// <param TV="TreeView">TreeView控件</param> /// <param ANode="TreeNode">当前节点</param> /// <param n="int">当前节点</param> public void ADD_NullTreeNode(TreeView TV, TreeNode ANode, int n) { DataSet DSet = new DataSet();//实例化一个DataSet对象 if (n == 0)//当n==0时为根节点 DSet = OledbHelper.getDataSet("select casic_hfs.\"NODEID\",casic_hfs.\"NODEPID\"," +"casic_hfs.\"NODENAME\",casic_hfs.\"NODETYPE\" from casic_hfs where casic_hfs.\"NODENAME\"=" +"'" + ANode.Text + "'", "casic_hfs"); if (n == 1)//当n==1时为子节点 DSet = OledbHelper.getDataSet("select casic_hfs.\"NODEID\",casic_hfs.\"NODEPID\"," + "casic_hfs.\"NODENAME\",casic_hfs.\"NODETYPE\" from casic_hfs where casic_hfs.\"NODEPID\"='" + ANode.Tag + "'", "casic_hfs"); if (DSet.Tables[0].Rows.Count > 0)//当查找到的行数大于时 { TreeNode SonNode = new TreeNode("");//实例化一个空的节点 ANode.Nodes.Add(SonNode);//添加该节点 } else { ANode.Nodes.Clear();//清空当前节点下的所有子节点 } } #endregion #region 调用文件夹编辑窗体 /// <summary> /// 调用文件夹编辑窗体 /// </summary> /// <param nob="string">判断操作的是资料集还是文件</param> /// <param sender="object">项名称</param> /// <param mark="int">标识</param> public void Proj_edit(string nob, object sender, int mark) { Redact_T = nob; Redact_N = ""; Redact_M = ""; Redact_D = ""; ListViewItem HLVI = new ListViewItem(); TreeNode HTreeNode = new TreeNode(); DataSet DS = new DataSet(); if (sender.GetType().Name == "ListView") { if (((ListView)sender).SelectedItems.Count > 0) { HLVI = ((ListView)sender).SelectedItems[0]; Redact_N = ((ListView)sender).SelectedItems[0].Text; Redact_M = ((ListView)sender).SelectedItems[0].Tag.ToString(); DS = OledbHelper.getDataSet("select NODEID,NODEPATH from " +"casic_hfs where NODEID=" + Redact_M, "casic_hfs"); Redact_D = DS.Tables[0].Rows[0][1].ToString(); } } if (sender.GetType().Name == "TreeView") { if (((TreeView)sender).SelectedNode != null) { HTreeNode = ((TreeView)sender).SelectedNode; Redact_N = ((TreeView)sender).SelectedNode.Text; Redact_M = ((TreeView)sender).SelectedNode.Tag.ToString(); DS = OledbHelper.getDataSet("select NODEID,NODEPATH from " + "casic_hfs where NODEID=" + Redact_M, "casic_hfs"); if (DS.Tables[0].Rows.Count == 0) return; Redact_D = DS.Tables[0].Rows[0][1].ToString(); } } Frm_HFSProjedits FrmTjxm = new Frm_HFSProjedits();//实例化Frm_Folder窗体 FrmSetUp(FrmTjxm);//调用自定义方法FrmSetUp,对Frm_Radical窗体进行设置 FrmTjxm.Tag = mark; switch (mark) { case 0: FrmTjxm.Text = "添加项目"; break; case 1: FrmTjxm.Text = "修改项目"; break; case 2: FrmTjxm.Text = "删除项目"; break; } if (FrmTjxm.ShowDialog() == DialogResult.OK)//显示窗体 { switch (mark) { case 0: { if (sender.GetType().Name == "ListView") { ListViewItem lvi = new ListViewItem(Redact_N);//实例化一个项 lvi.Tag = int.Parse(Redact_M); ((ListView)sender).Items.Add(lvi);//添加列信息 } if (sender.GetType().Name == "TreeView") { TreeNode SonNode = new TreeNode(Redact_N);//实例化一个具有当前节点名称的节点 SonNode.Tag = int.Parse(Redact_M);//在该节点的Tag属性中存放当前信息的主ID号 SonNode.ImageIndex = 0; HTreeNode.Nodes.Add(SonNode);//添加该节点 } break; } case 1: { if (sender.GetType().Name == "ListView") { HLVI.Text = Redact_N; } if (sender.GetType().Name == "TreeView") { HTreeNode.Text = Redact_N; } break; } case 2: { if (sender.GetType().Name == "ListView") { HLVI.Remove(); } if (sender.GetType().Name == "TreeView") { HTreeNode.Remove(); } break; } } } FrmTjxm.Dispose(); } #endregion #region 返回上一级目录 /// <summary> /// 返回上一级目录 /// </summary> /// <param dir="string">目录</param> /// <returns>返回String对象</returns> public string UpAndDown_Dir(string dir) { string Change_dir = ""; Change_dir = Directory.GetParent(dir).FullName; return Change_dir; } #endregion #region 文件夹的操作 /// <summary> /// 文件夹的操作 /// </summary> /// <param dir="string">目录</param> /// <param NewName="string">修改的文件夹名称</param> /// <param n="int">标识</param> /// <returns>返回int对象</returns> public int Folder_Handle(string dir, string Sdir, string NewName, int n) { //MessageBox.Show(dir+"=="+Sdir+"=="+NewName+"=="+n.ToString()); string F_Name = ""; int t = 0; if (Redact_T == "T" || Redact_T == "F") F_Name = "文件夹"; if (Redact_T == "W") F_Name = "文件"; FileInfo FInfo = new FileInfo(dir); switch (n) { case 0: { if (Redact_T == "T" || Redact_T == "F") { if (Directory.Exists(dir)) { t = 1; MessageBox.Show("该" + F_Name + "已存在,无法创建。"); break; } Directory.CreateDirectory(dir); if (Directory.Exists(dir) == false) t = 1; } if (Redact_T == "W" || Redact_T == "G") { FileInfo SFInfo = new FileInfo(Sdir); bool tbool = true; if (SFInfo.Exists == false) { t = 1; MessageBox.Show("没有找到要复制的" + F_Name); break; } if (FInfo.Exists) { if (MessageBox.Show("文件夹下有同名文件,是否替换?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) tbool = true; else tbool = false; } try { SFInfo.CopyTo(dir, tbool); } catch (Exception ex) { t = 1; MessageBox.Show(F_Name + "复制失败。"); } } break; } case 1: { string NewDir = ""; if (Redact_T == "T" || Redact_T == "F") { NewDir = UpAndDown_Dir(dir) + "\\" + NewName; if (Directory.Exists(NewDir)) { t = 1; MessageBox.Show("该" + F_Name + "已存在,无法修改。"); break; } if (Directory.Exists(dir)) { Directory.Move(dir, NewDir); } else { MessageBox.Show(F_Name + "不存在,无法修改。"); t = 1; break; } } if (Redact_T == "W") { if (FInfo.Exists) { try { FInfo = new FileInfo(dir); FInfo.MoveTo(UpAndDown_Dir(dir) + "\\" + NewName); } catch (Exception ex) { MessageBox.Show(F_Name + "文件名修改失败。"); t = 1; } } else { MessageBox.Show(F_Name + "不存在,无法修改。"); t = 1; } } break; } case 2: { if (Redact_T == "T" || Redact_T == "F") { if (Directory.Exists(dir) == false) { t = 1; MessageBox.Show(F_Name + "不存在。"); break; } Directory.Delete(dir, true); if (Directory.Exists(dir)) { t = 1; MessageBox.Show(F_Name + "删除失败。"); break; } } if (Redact_T == "W") { if (FInfo.Exists == false) { t = 1; MessageBox.Show(F_Name + "不存在。"); break; } try { FInfo.Delete(); } catch (Exception ex) { t = 1; MessageBox.Show(F_Name + "删除失败。"); } } break; } case 3: { if (Directory.Exists(Sdir) == false) { t = 1; MessageBox.Show("没有找到要复制的文件夹。"); break; } try { Files_Copy(dir, Sdir); if (NewName == "data") { DirectoryInfo di = new DirectoryInfo(dir);//打开path目录,如果存在则执行方法 if (di.Exists) { DataSet DS = OledbHelper.getDataSet("select max(NODEID) from casic_hfs", "casic_hfs"); string SName = DS.Tables[0].Rows[0][0].ToString(); Files_List(di, int.Parse(Redact_M)); Redact_M = SName; Redact_N = Files_Name(dir, 1); } } } catch (Exception ex) { t = 1; MessageBox.Show("文件夹制复失败。"); } break; } } return t; } #endregion #region 批量将文件夹的路径存入数据库中 /// <summary> /// 批量将文件夹的路径存入数据库中 /// </summary> /// <param dir="FileSystemInfo">目录</param> /// <param n="int">标识</param> /// <returns>返回string对象</returns> private void Files_List(FileSystemInfo dir, int NodeID) { int PID = NodeID; string SubDir = dir.ToString(); if (!dir.Exists)//先判断所指的文件或文件夹是否存在 { return; } DirectoryInfo dirD = dir as DirectoryInfo;//如果给定的参数不是文件夹则退出 if (dirD == null) { OledbHelper.getsqlcom("insert into casic_hfs" +"(NODEPID,NODENAME,NODEPATH,NodeType,NODESIGN) values(" + PID + ",'" + dirD.Name.Trim() + "','" + SubDir + "',1,0)"); return; } OledbHelper.getsqlcom("insert into casic_hfs (NODEPID,NODENAME," + "NODEPATH,NODETYPE,NODESIGN) values(" + PID + ",'" + dirD.Name.Trim() + "','" + SubDir + "',1,0)"); DataSet DS = OledbHelper.getDataSet("select max(NODEID) from casic_hfs", "casic_hfs"); PID = int.Parse(DS.Tables[0].Rows[0][0].ToString()); SubDir = SubDir + "\\"; FileSystemInfo[] files = dirD.GetFileSystemInfos();//获取文件夹中所有文件和文件夹 //对单个FileSystemInfo进行判断,如果是文件夹则进行递归操作 foreach (FileSystemInfo FSys in files) { FileInfo file = FSys as FileInfo; if (file != null) { OledbHelper.getsqlcom("insert into casic_hfs (NODEPID,NODENAME," + "NODEPATH,NODETYPE,NODESIGN) values(" + PID + ",'" + file.Name.Trim() + "','" + SubDir + file.Name + "',0,0)"); } else { DirectoryInfo DD = new DirectoryInfo(SubDir + FSys); Files_List(DD, PID);//进行Files_List方法的递归调用 } } } #endregion #region 文件夹的复制 /// <summary> /// 文件夹的复制 /// </summary> /// <param Ddir="string">要复制的目的路径</param> /// <param Sdir="string">要复制的原路径</param> /// <returns>返回int对象</returns> private void Files_Copy(string Ddir, string Sdir) { DirectoryInfo dir = new DirectoryInfo(Sdir); string SbuDir = Ddir; try { if (!dir.Exists)//判断所指的文件或文件夹是否存在 { return; } DirectoryInfo dirD = dir;//如果给定参数不是文件夹则退出 string UpDir = UpAndDown_Dir(Ddir); if (dirD == null)//判断文件夹是否为空 { Directory.CreateDirectory(UpDir + "\\" + dirD.Name);//如果为空,创建文件夹并退出 return; } Directory.CreateDirectory(UpDir + "\\" + dirD.Name); SbuDir = UpDir + "\\" + dirD.Name + "\\"; FileSystemInfo[] files = dirD.GetFileSystemInfos();//获取文件夹中所有文件和文件夹 //对单个FileSystemInfo进行判断,如果是文件夹则进行递归操作 foreach (FileSystemInfo FSys in files) { FileInfo file = FSys as FileInfo; if (file != null)//如果是文件的话,进行文件的复制操作 { FileInfo SFInfo = new FileInfo(file.DirectoryName + "\\" + file.Name);//获取文件所在的原始路径 SFInfo.CopyTo(SbuDir + "\\" + file.Name, true);//将文件复制到指定的路径中 } else { string pp = FSys.Name;//获取当前搜索到的文件夹名称 Files_Copy(SbuDir + FSys, Sdir + "\\" + FSys);//如果是文件,则进行递归调用 } } } catch (Exception ex) { } } #endregion #region 获取文件或文件夹的名称 /// <summary> /// 获取文件或文件夹的名称 /// </summary> /// <param dir="string">目录</param> /// <param n="int">标识</param> /// <returns>返回string对象</returns> public string Files_Name(string dir, int n) { string DF_Name = ""; if (n == 0) { string F_N = dir.Substring(dir.LastIndexOf("\\") + 1, dir.LastIndexOf(".") - dir.LastIndexOf("\\") - 1); string F_E = dir.Substring(dir.LastIndexOf(".") + 1, dir.Length - dir.LastIndexOf(".") - 1); DF_Name = F_N + "." + F_E; } if (n > 0) { DF_Name = dir.Substring(dir.LastIndexOf("\\") + 1, dir.Length - dir.LastIndexOf("\\") - 1); } return DF_Name; } #endregion #region 修改或删除文件夹后在数据库中整理子文件夹和子文件的目录 /// <summary> /// 修改或删除文件夹后在数据库中整理子文件夹和子文件的目录 /// </summary> /// <param Olddir="string">原目录</param> /// <param NewName="string">修改后的目录</param> /// <param n="int">标识</param> public void DFiles_CleanUp(string Olddir, string Newdir, int n) { string DFsql = ""; //DataSet DS = dataclass.getDataSet("select NodeID,NodeName,NodePath from Ped where NodePath like '" + Olddir + "%'", "Ped"); string DF_Name = Files_Name(Newdir, n); switch (n) { case 1: { string olddir = Files_Name(Olddir,n); //OledbHelper.getsqlcom("update HFS set NodeName='" + DF_Name + "' where NodePath like '" + Olddir + "'"); OledbHelper.getsqlcom("update casic_hfs set NODEPATH='" + DF_Name + "' where NODEPATH = '" + olddir + "'"); //DFsql = "update HFS set NodePath=(select REPLACE(NodePath,'" + Olddir + "','" + Newdir + "')) where len(NodePath)=len('" + Olddir + "') or substring(NodePath,len('" + Olddir + "')+1,1)='\\'"; //DFsql = "update HFS set NodePath=(select REPLACE(NodePath,'" + olddir + "','" + DF_Name + "')) where len(NodePath)=len('" + olddir + "') or substring(NodePath,len('" + olddir + "')+1,1)='\\'"; break; } case 2: { DF_Name = Files_Name(Olddir, n); //DFsql = "delete HFS where (len(NodePath)=len('" + Olddir + "') or substring(NodePath,len('" + Olddir + "')+1,1)='\\') and (substring(NodePath,0,len('" + Olddir + "')+1)='" + Olddir + "')"; //DFsql = "delete casic_hfs where (len(casic_hfs.\"NODEPATH\")=len('" + DF_Name // + "') or substring(casic_hfs.\"NODEPATH\",len('" + DF_Name // + "')+1,1)='\\') and (substring(casic_hfs.\"NODEPATH,0,len('" + DF_Name // + "')+1)='" + DF_Name + "')"; DFsql = "delete casic_hfs where NODEPATH = '" + DF_Name + "'"; OledbHelper.getsqlcom(DFsql); break; } } //if (n > 0) // OledbHelper.getsqlcom(DFsql); } #endregion #region 文件夹禁止使用的字符 /// <summary> /// 文件夹禁止使用的字符 /// </summary> /// <param e="KeyPressEventArgs">键值</param> /// <returns>返回string对象</returns> public int Files_NameChar(KeyPressEventArgs e) { int n = 1; char[] F_ncs = Path.GetInvalidFileNameChars(); foreach (char F_nc in F_ncs) { if (F_nc == e.KeyChar) { n = 0; break; } } if (e.KeyChar == '\b') n = 1; return n; } #endregion #region 调用文件编辑窗体 /// <summary> /// 调用文件夹编辑窗体 /// </summary> /// <param nob="string">判断操作的资料集或文件</param> /// <param sender="object">项名称</param> /// <param mark="int">标识</param> public void FileEdit_form(string nob, object sender , int mark) { //MessageBox.Show(nob + "==" + mark.ToString()); Redact_T = nob; Redact_N = ""; Redact_M = ""; Redact_D = ""; TreeNode HTreeNode = new TreeNode(); DataSet DS = new DataSet(); if (((TreeView)sender).SelectedNode != null) { HTreeNode = ((TreeView)sender).SelectedNode; Redact_N = ((TreeView)sender).SelectedNode.Text; Redact_M = ((TreeView)sender).SelectedNode.Tag.ToString(); DS = OledbHelper.getDataSet("select casic_hfs.\"NODEID\",casic_hfs.\"NODEPATH\"," + "casic_hfs.\"NODETYPE\",casic_hfs.\"NODENAME\" from casic_hfs where casic_hfs.\"NODEID\"=" + Redact_M, "casic_hfs"); if (DS.Tables[0].Rows.Count == 0) return; Redact_D = DS.Tables[0].Rows[0][1].ToString();// +"\\" + DS.Tables[0].Rows[0][3].ToString(); int nt = int.Parse(DS.Tables[0].Rows[0][2].ToString()); //MessageBox.Show(Redact_D+"=!=!="+nt.ToString()); if (nt != 0 && mark > 0) return; } Frm_HFSfiles FrmFile = new Frm_HFSfiles();//实例化Frm_Folder窗体 FrmSetUp(FrmFile);//调用自定义方法FrmSetUp,对Frm_Radical窗体进行设置 FrmFile.Tag = mark; switch (mark) { case 0: FrmFile.Text = "添加文件"; break; case 1: FrmFile.Text = "修改文件"; break; case 2: FrmFile.Text = "删除文件"; break; } if (FrmFile.ShowDialog() == DialogResult.OK)//显示窗体 { switch (mark) { case 0: { TreeNode SonNode = new TreeNode("");//实例化一个具有当前节点名称的节点 for (int i = 0; i < ADD_LV.Items.Count; i++) { SonNode = new TreeNode(ADD_LV.Items[i].Text);//实例化一个具有当前节点名称的节点 SonNode.Tag = int.Parse(ADD_LV.Items[i].Tag.ToString());//在该节点的Tag属性中存放当前信息的主ID号 SonNode.ImageIndex = 2; HTreeNode.Nodes.Add(SonNode);//添加该节点 } break; } case 1: { HTreeNode.Text = Redact_N; break; } case 2: { HTreeNode.Remove(); break; } } } FrmFile.Dispose(); } #endregion #region 调用导入导出编辑窗体 /// <summary> /// 调用导入导出编辑窗体 /// </summary> /// <param nob="string">判断是导入或导出窗体</param> /// <param sender="object">项名称</param> /// <param mark="int">标识</param> public void GuideEdit_form(string nob, object sender, int mark) { Redact_T = nob; Redact_N = ""; Redact_M = ""; Redact_D = ""; TreeNode HTreeNode = new TreeNode(); DataSet DS = new DataSet(); if (((TreeView)sender).SelectedNode != null) { HTreeNode = ((TreeView)sender).SelectedNode; Redact_N = ((TreeView)sender).SelectedNode.Text; Redact_M = ((TreeView)sender).SelectedNode.Tag.ToString(); DS = OledbHelper.getDataSet("select NODEID,NODEPATH,NODETYPE,NODENAME from casic_hfs where NODEID=" + Redact_M, "casic_hfs"); if (DS.Tables[0].Rows.Count == 0) return; Redact_D = DS.Tables[0].Rows[0][1].ToString(); int nt = int.Parse(DS.Tables[0].Rows[0][2].ToString()); string filename = DS.Tables[0].Rows[0][3].ToString(); string location = ""; location = Utility.uploadpath + "\\HFS\\" + Redact_D + "\\" + filename; Redact_D = location; if (nt == 0 && mark != 2) return; if (nt > 0 && mark == 2) return; } Frm_HFSinout FrmInOut = new Frm_HFSinout();//实例化Frm_Folder窗体 FrmSetUp(FrmInOut);//调用自定义方法FrmSetUp,对Frm_Radical窗体进行设置 FrmInOut.Tag = mark; if (FrmInOut.ShowDialog() == DialogResult.OK)//显示窗体 { if (mark == 0) { TreeNode SonNode = new TreeNode(Redact_N);//实例化一个具有当前节点名称的节点 SonNode.Tag = int.Parse(Redact_M);//在该节点的Tag属性中存放当前信息的主ID号 SonNode.ImageIndex = 0; HTreeNode.Nodes.Add(SonNode);//添加该节点 SonNode.Nodes.Add(new TreeNode("")); } } FrmInOut.Dispose(); } #endregion #region 调用导入导出编辑窗体 /// <summary> /// 调用导入导出编辑窗体 /// </summary> /// <param STV="TreeView">查询的节点</param> /// <param DLV="ListView">显示查找的文件</param> /// <param FName="string">查找的文件名</param> public void Find_File(TreeView STV, ListView DLV, string FName,int mark) { string dir = ""; DataSet DS = new DataSet(); if (FName == "") { MessageBox.Show("查找文件名不能为空。"); return; } if (BaseNode != "") DS = OledbHelper.getDataSet("select NODEID,NODEPATH,NODETYPE from casic_hfs where NODENAME='" + BaseNode + "' and NODETYPE=2", "casic_hfs"); else DS = OledbHelper.getDataSet("select NODEID,NODEPATH,NODETYPE from casic_hfs where NODEID='" + int.Parse(Redact_M) + "'", "casic_hfs"); if (DS.Tables[0].Rows.Count == 0) { MessageBox.Show("无法对文件进行查找。"); return; } if (DS.Tables[0].Rows[0][2].ToString() == "0") { MessageBox.Show("不可以对单个文件进行查找。"); return; } dir = DS.Tables[0].Rows[0][1].ToString(); string sql = "select NODEID,NODENAME from (select * from casic_hfs " + " where NODEPATH like '"+dir+"%') a where NODENAME like '%"+FName +"%' and NODETYPE=0"; //DS = OledbHelper.getDataSet("select NodeID,NodeName from (select * from HFS where NodePath like '" // + dir + "%') a where NodeName like '%" + FName + "%' and NodeType=0", "HFS"); DS = OledbHelper.getDataSet(sql,"casic_hfs"); if (DS.Tables[0].Rows.Count == 0) { MessageBox.Show("没有查到相关文件。"); return; } DLV.Items.Clear(); for (int i = 0; i < DS.Tables[0].Rows.Count; i++) { ListViewItem lvi = new ListViewItem(DS.Tables[0].Rows[i][1].ToString());//实例化一个项 lvi.Tag = int.Parse(DS.Tables[0].Rows[i][0].ToString()); lvi.ImageIndex = 2;//设置各项的图片 DLV.Items.Add(lvi);//添加列信息 } } #endregion } }