private void UpdateList(bool setNumber) { if (setNumber) { //DirectoryInfo di = new System.IO.DirectoryInfo(CurrentInventoryFolder); //FileInfo[] fis = di.GetFiles("*.*", SearchOption.TopDirectoryOnly); //int currentMaxNumber = 0; //foreach (FileInfo fi in fis) //{ // if (IsNumbered(fi.Name)) // { // int num = GetNumber(fi.Name); // currentMaxNumber = Math.Max(currentMaxNumber, num); // } //} int newNumber = 0; List <string> moveFroms = new List <string>(); List <string> moveTos = new List <string>(); string dir = null; foreach (ListViewItem item in lvMain.Items) { LVInfo info = (LVInfo)item.Tag; Debug.Assert(dir == null || dir == info.ParentDir); dir = info.ParentDir; string oldName = info.FileName; string newName = info.FileName; if (IsNumbered(newName)) { newName = UnsetNumber(newName); } newName = SetNumber(++newNumber, newName); if (oldName != newName) { moveFroms.Add(Path.Combine(dir, oldName)); moveTos.Add(Path.Combine(dir, newName)); } } Debug.Assert(moveFroms.Count == moveTos.Count); if (moveFroms.Count != 0) { int ret = CppUtils.MoveFiles(moveFroms.ToArray(), moveTos.ToArray()); if (ret != 0 && ret != 128) { Alert(Properties.Resources.FAILED_TO_MOVE_FILES); return; } } } lvMain.Items.Clear(); { DirectoryInfo di = new System.IO.DirectoryInfo(CurrentInventoryFolder); System.IO.FileInfo[] fis = di.GetFiles("*.*", SearchOption.TopDirectoryOnly); Array.Sort(fis, delegate(FileInfo f1, FileInfo f2) { return(f1.Name.CompareTo(f2.Name)); } ); bool colored = false; foreach (FileInfo fi in fis) { if (!fi.IsReadOnly && (fi.Attributes & FileAttributes.Hidden) == 0 && string.Compare(fi.Extension, ".lnk", true) == 0) { ListViewItem item = new ListViewItem(); item.Tag = new LVInfo(fi.FullName); UpdateItem(item); item.BackColor = colored ? option_.btnLVColor1.BackColor : option_.btnLVColor2.BackColor; colored = !colored; lvMain.Items.Add(item); } } } }