/// <summary> /// When a new directory is selected, this method is called to clear the ListView and fill it with /// the contents of the new directory /// </summary> /// <param name="oldItem">The ShellItem of the previous selected directory</param> /// <param name="newItem">The ShellItem of the new selected directory</param> private bool SetNewPath(ShellItem oldItem, ShellItem newItem) { Cursor.Current = Cursors.WaitCursor; if (oldItem != newItem && newItem.Expand(true, false, Handle)) { ShellBrowserComponent.UpdateCondition.ContinueUpdate = false; fileView.BeginUpdate(); fileView.Items.Clear(); fileView.ClearSelections(); if (oldItem != null) { bool used = false; foreach (ShellBrowser br in ShellBrowserComponent.Browsers) { if (!this.Equals(br) && oldItem.Equals(br.CurrentDirectory)) { used = true; break; } } if (!used) oldItem.Clear(true, false); } currentDirectory = newItem; ListViewItem[] newListItemsArray = new ListViewItem[newItem.Count]; string[] subItems = new string[fileView.Columns.Count - 1]; for (int i = 0; i < newListItemsArray.Length; i++) { newListItemsArray[i] = GetListViewItem(subItems, newItem[i]); } fileView.SetSorting(true); fileView.Items.AddRange(newListItemsArray); fileView.SetSorting(false); fileView.EndUpdate(); Cursor.Current = Cursors.Default; return true; } else { Cursor.Current = Cursors.Default; return (oldItem == newItem); } }