0

我有一个包含许多帮助按钮的 C# 项目。单击其中一个按钮时,会打开一个帮助文件 (Help.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 文件。如果我的帮助文件已经打开,是否有任何方法可以更改页面?如果有办法通过命令行执行此操作,那将是一个很好的起点。

4

1 回答 1

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# 代码、GUI 和打开的帮助文件。

为了下载,我提供了一个 C# VS2008 项目,包括上面的代码和具有不同帮助查看器窗口的帮助文件(不同的 CHM 文件仅用于展示案例)。

于 2013-04-10T17:25:47.130 回答