public static void GetRecursionFile(ioInfo target, ref List <fileInfo> outfile) { foreach (var fi in xmlUtils.Files(target)) { outfile.Add(fi); } foreach (var foi in xmlUtils.Folders(target)) { GetRecursionFile(foi, ref outfile); } }
//LIST void loadlistView(ioInfo cur) { tstAddress.Text = ""; lv.Items.Clear(); if (cur == null) { tsbtnBack.Enabled = false; var ld = xmlUtils.Drives(); foreach (driveInfo di in ld) { lv.Items.Add(new ListViewItem { Text = string.Format("{0} ({1})", di.VolumeLabel, di.Name.Replace(@"\", "")), Tag = di, ImageKey = di.Type }); } } else { tstAddress.Text = xmlUtils.Getlocation(cur, true); tsbtnBack.Enabled = true; curIO = cur; var lfo = xmlUtils.Folders(cur); foreach (folderInfo foi in lfo) { lv.Items.Add(new ListViewItem { Text = foi.Name, Tag = foi, ImageKey = "Folder" }); } var lfi = xmlUtils.Files(cur); foreach (fileInfo fi in lfi) { if (!lv.LargeImageList.Images.ContainsKey(fi.Ext)) { lv.LargeImageList.Images.Add(fi.Ext, myShell.GetFileIcon(string.Format(".{0}", fi.Ext), false)); } lv.Items.Add(new ListViewItem { Text = string.Format($"{fi.Name}.{fi.Ext}"), Tag = fi, ImageKey = fi.Ext }); } } }
public static string Getlocation(ioInfo cur, bool iscurrent) { string path = ""; if (iscurrent) { path = cur.Name; } var curpar = cur?.Parent; while (curpar != null) { path = string.Format($@"{curpar.Name.Replace(@"\", "")}\{path}"); curpar = curpar.Parent; } return(path); }
public static List <folderInfo> Folders(ioInfo cur) { var node = cur.Node; var l = new List <folderInfo>(); var lfo = node.SelectNodes("Folder"); foreach (XmlNode nfo in lfo) { l.Add(new folderInfo { Name = nfo.Attributes["name"].Value, Node = nfo, Parent = cur }); } return(l); }
void addchildnodeforTreeNode(TreeNode Cur, ioInfo fi) { Cur.Nodes.Clear(); foreach (folderInfo foi in xmlUtils.Folders(fi)) { var tn = new TreeNode { Text = foi.Name, ImageKey = "Folder", SelectedImageKey = "Folder", Tag = foi }; tn.Nodes.Add(""); Cur.Nodes.Add(tn); } Cur.Expand(); }
public static List <fileInfo> Files(ioInfo cur) { var node = cur.Node; var l = new List <fileInfo>(); var lf = node.SelectNodes("File"); foreach (XmlNode nf in lf) { l.Add(new fileInfo { Name = nf.Attributes["name"].Value, Ext = nf.Attributes["ext"].Value, Size = long.Parse(nf.Attributes["size"].Value), Node = nf, Parent = cur }); } return(l); }
//BUTTON private void BtnOK_Click(object sender, EventArgs e) { List <ioInfo> listiochoosen = new List <ioInfo>(); if (AddFile) { List <driveInfo> listdisk = new List <driveInfo>(); List <folderInfo> listfolder = new List <folderInfo>(); List <fileInfo> listfile = new List <fileInfo>(); foreach (TreeNode tn in selectednode) { if (tn.Tag is folderInfo) { listfolder.Add(tn.Tag as folderInfo); } else if (tn.Tag is driveInfo) { listdisk.Add(tn.Tag as driveInfo); } } if (cb.Checked) { foreach (var di in listdisk) { for (int i = listfolder.Count - 1; i >= 0; i--) { var foi = listfolder[i]; ioInfo temp = foi; while (temp.Parent != null) { temp = temp.Parent; } if (temp == (ioInfo)di) { listfolder.Remove(foi); } } xmlUtils.GetRecursionFile(di, ref listfile); } foreach (folderInfo foi in listfolder) { xmlUtils.GetRecursionFile(foi, ref listfile); } } else { foreach (var di in listdisk) { listfile.AddRange(xmlUtils.Files(di)); } foreach (folderInfo foi in listfolder) { listfile.AddRange(xmlUtils.Files(foi)); } } for (int i = listfile.Count - 1; i >= 0; i--) { var fi = listfile[i]; string filename = string.Format($"{fi.Name}.{fi.Ext}"); var reg = new Regex(txtMask.Text.Replace(".", "[.]").Replace("*", ".*").Replace("?", ".")); if (!reg.IsMatch(filename)) { listfile.Remove(fi); } } foreach (fileInfo fi in listfile) { listiochoosen.Add(fi); } } else { foreach (TreeNode tn in selectednode) { listiochoosen.Add(tn.Tag as ioInfo); } } pickdone?.Invoke(listiochoosen); DialogResult = DialogResult.OK; Close(); }