web-dev-qa-db-ja.com

WPFでF1ヘルプ(CHM形式)を使用する

私はしばらくの間WPFアプリケーションに取り組んできましたが、CHM形式のヘルプドキュメントを添付するときが来ました。

しかし悲しいかな! WinformsでCHMファイルを表示する標準的な方法であるHelpProviderは魔法のように消えてしまい、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ウィンドウだけです。

テイカーはいますか?

18
phyllis diller

私をクレイジーと呼んでください、しかしあなたはただすることができませんでした:

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

System.Windows.Forms.dllを含めると、次のこともできます。

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

また、WPFに状況依存ヘルプシステムを追加することについての記事 ここ があります。

26

私は試しています WPFの簡単なヘルプ これはキーワードに基づいた状況依存ヘルプにも対応しています。これまでのところ、それは良さそうです。私がする必要があるのは、ひびを入れて、まともな助けを書くことだけです!

8
Peter M

http://www.pinvoke.net/default.aspx/hhctrl.HtmlHelp を使用して、指定したトピックでchmヘルプを開き、chmウィンドウの表示方法をより細かく制御できます。

2
Dzmitry Lahoda

ファイルを外部で開く代わりに Help クラスを使用するのはどうですか

0
jitter