public void Navigate(string initialPath) { if (initialPath != null && initialPath.Trim().Length > 0) { initialPath = FileSpec.GetFullPath(initialPath); TreeNodeLocalItem foundItem = null; if (TryFindNodeByServerItem(initialPath, null, out foundItem)) { foundItem.EnsureVisible(); m_navigateToWhenLoaded = null; return; } var roots = WorkingFolder.GetWorkspaceRoots(m_workspace.Folders); foreach (String root in roots) { if (FileSpec.IsSubItem(initialPath, root)) { string[] folders = initialPath.Substring(root.Length + 1).Split('\\'); string curPath = root; string prevPath = root; foundItem = null; m_navigateToWhenLoaded = null; for (int i = 0; i < folders.Length; i++) { prevPath = curPath; curPath = curPath + "\\" + folders[i]; if (TryFindNodeByServerItem(curPath, foundItem, out foundItem)) { foundItem.EnsureVisible(); } else { m_toExpand.Add(prevPath); m_navigateToWhenLoaded = initialPath; } } StartBackgroundWorkerIfNeeded(); break; } } } }