使用F1帮助(CHM格式)使用WPF

时间:2009-05-29 20:56:33

标签: c# wpf winforms interop chm

我已经在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窗口,没有帮助文件。

任何接受者?

5 个答案:

答案 0 :(得分:26)

如果您包含System.Windows.Forms.dll,您还可以执行以下操作:

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

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

答案 1 :(得分:25)

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

System.Diagnostics.Process.Start(@"C:\path-to-chm-file.chm");

答案 2 :(得分:8)

我正在尝试Easy Help with WPF,它还根据关键词解决了上下文相关的帮助。到目前为止似乎很好。我需要做的就是破解并写下一些不错的帮助!

答案 3 :(得分:2)

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

答案 4 :(得分:0)

如何使用Help类而不是外部打开文件