2012-11-13 7 views
1

winforms 응용 프로그램에 대한 상황에 맞는 도움말을 만들고 싶습니다. HelperProvider 구성 요소에 대한 참조가있는 클래스를 사용하고, HelpNamespace는 인덱스 HTML 파일로 설정되며, 양식은 다음과 같습니다. 내가 config 파일에서 얻을 주제로 helperprovider 폼의 각 컨트롤을 등록로드 된 나는 몇 가지 컨트롤이 인덱스 파일과 다른 몇 가지 주제로 구성되어 있는지 확신 디버깅 할 때HelperProvider는 항상 인덱스 파일을 엽니 다.

helpProvider.SetShowHelp(control, true); 
     helpProvider.SetHelpNavigator(control, helpNavigator); 
     helpProvider.SetHelpKeyword(control, helpKeyword); 

하지만 실행할 때와 F1 키를 누르면 열리는 색인 파일 (HelpNamespace)이 항상 표시됩니다. 각 컨트롤에 대해 HelperProvider 인스턴스를 사용하고 모든 컨트롤에 대해 단일 인스턴스를 사용하지 않으면 제대로 작동합니다. 모든 컨트롤에 helperProvider의 단일 인스턴스를 사용할 수없는 이유는 무엇입니까?

답변

1

각 컨트롤에 대해 SetHelpKeyword가 필요합니다. HelpNavigator.TopicId는 주제 ID가 내부에있는 CHM에 유용 할 수 있습니다.

위의 코드 샘플에 ".Topic"이 누락되었습니다. 아래의 코드를 시도하거나에서 작업 예제를 다운로드 :
http://www.help-info.de/files_download/CSharp2008_CHM.zip

  // set F1 help topic for controls on this form 
     helpProvider1.SetHelpNavigator(this.btnStart, HelpNavigator.Topic); 
     helpProvider1.SetHelpKeyword(this.btnStart, @"/Garden/flowers.htm"); 
     helpProvider1.SetHelpNavigator(this.btnExit, HelpNavigator.Topic); 
     helpProvider1.SetHelpKeyword(this.btnExit, @"/Garden/tree.htm"); 
     helpProvider1.SetHelpNavigator(this.chkShowHelpWithNavigationPane, HelpNavigator.Topic); 
     helpProvider1.SetHelpKeyword(this.chkShowHelpWithNavigationPane, @"/HTMLHelp_Examples/jump_to_anchor.htm#AnchorSample"); 
+0

감사 답변을 게시! [Self-Promotion에 대한 FAQ] (http://stackoverflow.com/faq#promotion)를주의 깊게 읽으십시오. 또한 자신의 사이트/제품에 링크 할 때마다 면책 조항을 게시하는 것이 필수적입니다. –