2013-04-09 3 views
1

수많은 도움말 단추가있는 C# 프로젝트가 있습니다. 이 단추 중 하나를 클릭하면 관련 페이지에 도움말 파일 (Help.chm)이 열립니다. 다음 페이지 중 하나에 그 작업을 수행하는 코드입니다 :명령 줄을 통해 chm 파일의 페이지를 변경하십시오.

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "hh.exe"; 
startInfo.Arguments = "Help.chm::/html/97198ffa-adb2-4897-b5e4-5bba54252900.htm";//page id 
Process.Start(startInfo); 

이 잘 작동,하지만 사용자가 다른 도움말 버튼을 클릭 할 때 지금 (또는 동일 하나) 새로운 도움말 파일은 잠재적으로 많은 중복을 떠나 열립니다 chm 파일이 열립니다. 내 도움말 파일이 이미 열려있는 경우 대신 페이지를 변경할 수있는 방법이 있습니까? 명령 줄을 통해이 작업을 수행 할 수있는 방법이 있다면 시작하는 것이 좋습니다.

+1

왜 .NET Framework의 ['Help.ShowHelp'] (http://msdn.microsoft.com/en-us/library/s8a73aa6.aspx) 메서드를 사용하지 않는지 묻습니다. – Helen

답변

3

Helen과 마찬가지로 전에 Help.ShowHelp 메서드를 사용하는 것이 좋습니다.

private void btnHelpTopic1_Click(object sender, EventArgs e) 
    { 
     // sHTMLHelpFileName_ShowWithNavigationPane = "CHM-example_ShowWithNavigationPane.chm" 
     // This is a HelpViewer Window with navigation pane for show case only 
     // created with Microsoft HTMLHelp Workshop 
     helpProvider1.HelpNamespace = Application.StartupPath + @"\" + sHTMLHelpFileName_ShowWithNavigationPane; 
     Help.ShowHelp(this, helpProvider1.HelpNamespace, @"/Garden/tree.htm"); 
    } 

    private void btnHelpTopic2_Click(object sender, EventArgs e) 
    { 
     helpProvider1.HelpNamespace = Application.StartupPath + @"\" + sHTMLHelpFileName_ShowWithNavigationPane; 
     Help.ShowHelp(this, helpProvider1.HelpNamespace, @"/Garden/flowers.htm"); 
    } 

코드와 작은 GUI (스냅인 첨부)를 살펴보십시오. 사용자 버튼을 클릭하면 주제가 새로 고쳐집니다 (예 : 도움말 주제 1). Microsoft HTMLHelp Workshop으로 만든 도움말 파일에는 자동 동기화 매개 변수가 필요할 수 있습니다.

C# code, GUI and opened help file.

다운로드를 위해 나는 위의 코드와 (쇼 경우에만 다른 CHM 파일) 다른 도움말 뷰어 창에 도움말 파일을 포함하는 C# VS2008 Project 제공합니다.

관련 문제