public Component Find(string FullPath) { // ------------------------------------------------------ // Locates a component with the specified full path // e.g. /RootComponent/Child/SubChild // ------------------------------------------------------ if (FullPath == "") { throw new Exception("Cannot call Find with a blank path"); } if (FullPath[0] != Component.Delimiter) { throw new Exception("Path must be fully qualified: " + FullPath); } int Pos = FullPath.IndexOf(Component.Delimiter, 1); string RootName, NamePath; if (Pos == -1) { RootName = FullPath.Substring(1); NamePath = ""; } else { RootName = FullPath.Substring(1, Pos - 1); NamePath = FullPath.Substring(Pos + 1); } if (RootName.ToLower() != RootComponent.Name.ToLower()) { return(null); } if (NamePath == "") { return(RootComponent); } else { return(RootComponent.Find(NamePath)); } }