当我从我的 Windows 窗体应用程序打开帮助文件时,我正在使用此代码。
public static void ShowHelp(string constant)
{
Help.ShowHelp(dummyFormForHelp.Value, CHMFile, HelpNavigator.Topic, constant);
}
它工作正常,除非我在帮助文件中单击 GO>URL... 或打印按钮。 [
我没有收到消息,应用程序和 chm 文件根本没有响应。我需要去任务管理器并终止进程。我不知道它是什么。
我尝试使用来自只有一个窗体的简单 Windows 窗体应用程序的相同代码打开同一个文件,一切都很完美。所以我认为我的申请有问题。
什么会导致这样的问题? 这是一个拥有大量屏幕的大型企业应用程序。
最佳答案
打开CHM的代码片段好像不太干净(???dummyFormForHelp.Value
, constant
)。 Help.ShowHelp()
就像是对旧的 HTMLHelp API 调用的包装(另请参阅:HTMLHelp API - VBA, VB6 und VB2003)。参数有点死板。
再想一想 - 请阅读 HTMLHelp API - HH_CLOSE ALL Note并交叉检查您的代码。由于 HH API 中的一个错误,请确保您在主窗体的 Query_Unload 事件中调用它而不是 OnClose。
请使用正确的参数调用Help.ShowHelp()
函数,如下所示。
Help.ShowHelp(this, CHMFile, HelpNavigator.Topic, "foobar.htm");
从我上面的示例应用程序屏幕截图来看,以下所有代码都适用于我。请尝试您的需求。 Open URL 在这里很特别,而不是屏幕截图中显示的那个(URL ...)。
#region mnuHelp ---------------------------------------------
private void mnuHelpContents_Click(object sender, EventArgs e)
{
//--- Show contents of help file.
Help.ShowHelp(this, helpProviderMain.HelpNamespace);
}
private void mnuHelpIndex_Click(object sender, EventArgs e)
{
//--- Show index of help file.
Help.ShowHelpIndex(this, helpProviderMain.HelpNamespace);
}
private void mnuHelpSearch_Click(object sender, EventArgs e)
{
//--- Show search tab of help file.
Help.ShowHelp(this, helpProviderMain.HelpNamespace, HelpNavigator.Find);
}
private void mnuHelpTest_Click(object sender, EventArgs e)
{
//--- Show a web site with help content.
Help.ShowHelp(this, "http://www.stackoverflow.com");
}
private void mnuHelpOpenTopicByName_Click(object sender, EventArgs e)
{
//--- Open topic by name.
Help.ShowHelp(this, helpProviderMain.HelpNamespace, HelpNavigator.Topic, "Garden/tree.htm");
}
private void mnuHelpOpenTopicById_Click(object sender, EventArgs e)
{
//--- Open topic by ID.
Help.ShowHelp(this, helpProviderMain.HelpNamespace, HelpNavigator.TopicId, "20010");
}
#endregion -----------------------------------------------
编辑:
下载并运行我们的 MJ's Diagnostics工具。
MJ 的诊断程序是一个小型实用程序,可报告所有 HTML 帮助运行时和 Workshop(编译器)DLL 是否已安装并注册到正确的位置。如果您遇到编译器崩溃,并且在打开 CHM 或从 CHM 搜索选项卡搜索时崩溃,那么此实用程序将帮助解决 rouge DLL 问题。
关于c# - 单击 Url 或打印按钮时,chm 文件会卡住应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45614137/