编译的HTML帮助文件显示"当在调试的应用程序上按F1时,此程序无法显示..."

时间:2014-09-14 08:16:27

标签: c# visual-studio-2010 chm

我在编译的html帮助文件中遇到此问题,该文件在Microsoft Visual Studio 2010上运行。

注意:我没有足够的信誉点来发布图片。请忍受我的问题。

已编译的html帮助文件的名称为 GeneralHelp.chm 。为了使其显示,有两种方法:

  1. 点击“帮助”标签中的“常规”。
  2.  
  3. 仅在主表单处于活动状态时按F1键。
  4. 我不修改属性的默认值,但这里是激活的c#代码:

    private void generalToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Help.ShowHelp(this, Application.StartupPath + @"\GeneralHelp.chm");
            }
    
    private void mdiMain_Load(object sender, EventArgs e)
                {
                    helpProviderGeneral.HelpNamespace = Application.StartupPath + @"\GeneralHelp.chm";
                }
    

    第一种方法是正常工作,但第二种方式(当主窗体仅处于活动状态时按F1键)不是。它有一条消息显示“此程序无法显示网页”。我尝试重建.chm文件,但它仍然发生。

    此外,我发现当我首先点击其他链接,然后点击我想在导航窗格中看到的页面时,它变得正常。我的其他.chm文件不能以这种方式工作。我还将它保存在适当的文件夹中:Debug和Release。此外,GeneralHelp.chm的拼写和大小写是正确的。最后,当我尝试在MS Visual Studio 2010之外打开GeneralHelp.chm时,这很正常。

    如果您需要更多信息,请发表评论,我会回答。我真的很想知道如何解决这个问题。感谢您阅读本文的时间,我期待着给我一个解决方案。

1 个答案:

答案 0 :(得分:0)

您可以将helpProvider1.HelpNamespace想象为.chm帮助文件的链接。因此,不能调用这种方式的帮助主题。您必须了解CHM帮助文件的内部结构作为根节点。想想具有(子)目录和HTML主题的Web服务器上的结构化网页("主页"),例如@" /Garden/flowers.htm"

正如前面提到的其他注释(见上文)所述,请确保将.chm文件复制到EXE项目的bin \ Debug目录中。

在代码示例中,我在开头设置了常量。 CHM帮助文件的示例取决于技术编写者如何编译它们,例如使用HTMLHelp Workshop或其他帮助创作工具,用于表示可能性。

请注意内联注释://为此表单设置F1帮助主题... //并为此表单的某些控件设置F1帮助主题(每个控件两行)。

    namespace C_Sharp_CHM
{
  /// <summary>
  /// Using C# und CHM files.
  /// </summary>
  public partial class frmMain : Form
  {
    private const string sHTMLHelpFileName_ShowSingleHelpWindow = @"\help\CHM-example_ShowSingleHelpWindow.chm";
    private const string sHTMLHelpFileName_ShowWithNavigationPane = @"\help\CHM-example_ShowWithNavigationPane.chm";
    private const string sHTMLHelpFileName_ShowWithoutAutoSync = @"\help\CHM-example.chm";

    public frmMain()
    {
      InitializeComponent();
    }
   ...


  private void frmMain_Load(object sender, EventArgs e)
  {
    // example: System.Diagnostics.Process.Start(Application.StartupPath + sHTMLHelpFileName_ShowWithoutAutoSync);
    webBrowser1.Navigate(new Uri(GetChmUrl(Application.StartupPath + sHTMLHelpFileName_ShowWithoutAutoSync, "Garden/garden.htm")));

    if ((chkShowHelpWithNavigationPane.Checked == true))
    {
      helpProvider1.HelpNamespace = Application.StartupPath + sHTMLHelpFileName_ShowWithoutAutoSync;
    }
    else
    {
      helpProvider1.HelpNamespace = Application.StartupPath + sHTMLHelpFileName_ShowSingleHelpWindow;
    }
    // set F1 help topic for this form
    helpProvider1.SetHelpNavigator(this, HelpNavigator.Topic);
    helpProvider1.SetHelpKeyword(this, @"index.htm");
    // and set F1 help topic for some controls of this form  (two lines per control)
    helpProvider1.SetHelpNavigator(this.btnPopulate, HelpNavigator.Topic);
    helpProvider1.SetHelpKeyword(this.btnPopulate, @"/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");
    helpProvider1.SetHelpNavigator(this.btnOpenHelpShowTopic, HelpNavigator.Topic);
    helpProvider1.SetHelpKeyword(this.btnOpenHelpShowTopic, @"/HTMLHelp_Examples/image_and_text.htm");
  }

  private void btnOpenHelpShowTopic_Click(object sender, EventArgs e)
  {
    Help.ShowHelp(this.btnOpenHelpShowTopic, helpProvider1.HelpNamespace, HelpNavigator.Topic, @"/HTMLHelp_Examples/image_and_text.htm");
  }

enter image description here