public void ShowHelp(string HelpKeyword, string HelpFileName) { List <ICustomHelpViewer> providesHelp = new List <ICustomHelpViewer>(); foreach (var viewer in helpViewers) { int topics = viewer.UnderstandsKeyword(HelpKeyword); if (topics > 0) { providesHelp.Add(viewer); } } if (providesHelp.Count == 0) { return; } if (helpSelector == null || providesHelp.Count == 1) { providesHelp[0].ShowHelp(HelpKeyword); } else { TStringList keywords = new TStringList(); keywords.Duplicates = TDuplicates.dupIgnore; foreach (var viewer in providesHelp) { TStringList temp = new TStringList(viewer.GetHelpStrings(HelpKeyword)); int count = temp.Count; for (int i = 0; i < count; i++) { temp.Objects[i] = viewer; } keywords.AddStrings(temp); } int index = helpSelector.SelectKeyword(keywords); if (index < 0) { return; } string helpstring = keywords[index]; ICustomHelpViewer selectedViewer = (ICustomHelpViewer)keywords.Objects[index]; selectedViewer.ShowHelp(helpstring); } }