private void listView1_MouseDoubleClick(object sender, MouseEventArgs e) { if (lockedItemSelect) { return; } int index = -1; if (FileList.SelectedIndices.Count > 0) { index = FileList.SelectedIndices[0]; } if (index >= 0) { string filepathxy = FileList.Items[index].Text; ListViewItem lvi = null; this.FileList.SuspendLayout(); this.FileList.BeginUpdate(); if (filepathxy.Equals("..")) { folderDeep--; if (folderDeep <= 0) { this.FileList.EndUpdate(); folderDeeplist = new Dictionary <int, FolderTreeModel>(); drawListViewInitial(); return; } else { if (folderDeeplist != null) { Console.WriteLine("Back"); FileList.Items.Clear(); lvi = new ListViewItem(); lvi.Text = ".."; lvi.ImageIndex = _iconListManager.AddFileId("d", "d", true); FileList.Items.Add(lvi); selectedtree = folderDeeplist[folderDeep - 1]; foreach (FolderTreeModel row in folderDeeplist[folderDeep - 1].Rows.OrderBy(o => o.File != null).ToList()) { lvi = new ListViewItem(); lvi.Text = row.Title; if (row.File != null) { lvi.ImageIndex = _iconListManager.AddFileId(Path.GetExtension(row.Title), row.Title, false); double compresRatio = ConvertSize(row.File.decompressedSize, "MB") - ConvertSize(row.File.compressedSize, "MB") / ConvertSize(row.File.decompressedSize, "MB"); lvi.SubItems.Add(SizeSuffix(row.File.compressedSize)); lvi.SubItems.Add(SizeSuffix(row.File.decompressedSize)); lvi.SubItems.Add((compresRatio * 100).ToString("F").Substring(1) + " %"); lvi.Tag = row.File; } else { lvi.ImageIndex = _iconListManager.AddFileId(row.Title, row.Title, true); lvi.SubItems.Add("-"); lvi.SubItems.Add("-"); lvi.SubItems.Add("-"); lvi.Tag = row; } FileList.Items.Add(lvi); } folderDeeplist.Remove(folderDeep); } } } else if (FileList.Items[index].Tag != null && FileList.Items[index].Tag is PackStructureManager) { Console.WriteLine("In pck"); selectedPck = (PackStructureManager)FileList.Items[index].Tag; FileList.Items.Clear(); lvi = new ListViewItem(); lvi.Text = ".."; lvi.ImageIndex = _iconListManager.AddFileId("d", "d", true); FileList.Items.Add(lvi); if (selectedPck.root.Rows.Count > 0) { selectedtree = selectedPck.root.Rows[0]; folderDeeplist[folderDeep] = selectedtree; foreach (FolderTreeModel row in selectedtree.Rows.OrderBy(o => o.File != null).ToList()) { lvi = new ListViewItem(); lvi.Text = row.Title; if (row.File != null) { lvi.ImageIndex = _iconListManager.AddFileId(Path.GetExtension(row.Title), row.Title, false); double compresRatio = ConvertSize(row.File.decompressedSize, "MB") - ConvertSize(row.File.compressedSize, "MB") / ConvertSize(row.File.decompressedSize, "MB"); lvi.SubItems.Add(SizeSuffix(row.File.compressedSize)); lvi.SubItems.Add(SizeSuffix(row.File.decompressedSize)); lvi.SubItems.Add((compresRatio * 100).ToString("F").Substring(1) + " %"); lvi.Tag = row.File; } else { lvi.ImageIndex = _iconListManager.AddFileId(row.Title, row.Title, true); lvi.SubItems.Add("-"); lvi.SubItems.Add("-"); lvi.SubItems.Add("-"); lvi.Tag = row; } FileList.Items.Add(lvi); } folderDeep++; } else { selectedtree = selectedPck.root; folderDeeplist[folderDeep] = selectedtree; } } else if (FileList.Items[index].Tag != null && FileList.Items[index].Tag is FolderTreeModel) { Console.WriteLine("In Directory"); selectedtree = (FolderTreeModel)FileList.Items[index].Tag; FileList.Items.Clear(); lvi = new ListViewItem(); lvi.Text = ".."; lvi.ImageIndex = _iconListManager.AddFileId("d", "d", true); FileList.Items.Add(lvi); folderDeeplist[folderDeep] = selectedtree; foreach (FolderTreeModel row in selectedtree.Rows.OrderBy(o => o.File != null).ToList()) { lvi = new ListViewItem(); lvi.Text = row.Title; if (row.File != null) { lvi.ImageIndex = _iconListManager.AddFileId(Path.GetExtension(row.Title), row.Title, false); double compresRatio = ConvertSize(row.File.decompressedSize, "MB") - ConvertSize(row.File.compressedSize, "MB") / ConvertSize(row.File.decompressedSize, "MB"); lvi.SubItems.Add(SizeSuffix(row.File.compressedSize)); lvi.SubItems.Add(SizeSuffix(row.File.decompressedSize)); lvi.SubItems.Add((compresRatio * 100).ToString("F").Substring(1) + " %"); lvi.Tag = row.File; } else { lvi.ImageIndex = _iconListManager.AddFileId(row.Title, row.Title, true); lvi.SubItems.Add("-"); lvi.SubItems.Add("-"); lvi.SubItems.Add("-"); lvi.Tag = row; } FileList.Items.Add(lvi); } folderDeep++; } this.FileList.ResumeLayout(); this.FileList.EndUpdate(); textBox1.Text = ""; foreach (FolderTreeModel list in folderDeeplist.Values) { textBox1.AppendText(list.Title + Path.DirectorySeparatorChar); } string ddd = textBox1.Text; textBox1.Text = ddd.TrimEnd(Path.DirectorySeparatorChar); } }