20

我已经在 WPF 应用程序上工作了一段时间,现在是时候将 CHM 格式的帮助文档附加到它了。

可惜!HelpProvider 是在 Winforms 中显示 CHM 文件的标准方式,它神奇地消失了,并且在 WPF 中没有对应物。我一直在尝试使用 WindowsFormsHost 来生成一个新控件,以便我可以实际显示帮助,但本质上它只是控制了整个 UI。

更多细节:我有一个菜单项,我想在单击时打开 CHM 文件。

首先,我设置了 WindowsFormsHost ...

host = new System.Windows.Forms.Integration.WindowsFormsHost();
helpForm = new System.Windows.Forms.Control();
host.Child = helpForm;
host.Visibility = System.Windows.Visibility.Hidden;
this.grid1.Children.Add(host);

hp = new System.Windows.Forms.HelpProvider();
hp.HelpNamespace = "Somehelpfile.chm";
hp.SetHelpNavigator(helpForm, System.Windows.Forms.HelpNavigator.TableOfContents);

然后我说,瞧,展现你自己。

private void Help_Click(object sender, RoutedEventArgs e)
{
    host.Visibility = Visibility.Visible;
    helpForm.Show();
    hp.SetShowHelp(helpForm, true);
}  

我不确定从哪里开始。当我显示 helpForm 时,它会遮盖/覆盖现有的 UI,我得到的只是一个灰色的空 WPF 窗口,没有帮助文件。

有接盘侠吗?

4

5 回答 5

28

如果你包括 System.Windows.Forms.dll 你也可以这样做:

System.Windows.Forms.Help.ShowHelp(null, @"help.chm");

此外,这里还有一篇关于向 WPF 添加上下文相关帮助系统的文章。

于 2009-08-31T02:20:57.243 回答
24

叫我疯了,但你不能这样做:

System.Diagnostics.Process.Start(@"C:\path-to-chm-file.chm");
于 2009-05-29T21:06:25.363 回答
8

我正在尝试使用 WPF 的 Easy Help,它还解决了基于关键字的上下文相关帮助。目前看来还不错。我需要做的就是破解并写一些体面的帮助!

于 2009-11-01T17:21:32.340 回答
3

您可以使用http://www.pinvoke.net/default.aspx/hhctrl.HtmlHelp打开指定主题的 chm 帮助,并更好地控制 chm 窗口的显示方式。

于 2012-07-04T12:00:32.740 回答
0

如何使用帮助类而不是从外部打开文件

于 2009-06-18T20:24:36.870 回答