昨日に引き続きWPFのネタ。
以前、Wordからchmファイルを作るソフトの紹介をしましたが、それで作成したファイルをWPFで表示する方法を調べてみました。
Windowsフォームであれば専用のクラスがあるのですが、WPF用のものは無いみたいなので、Windowsフォームのライブラリを利用して表示します。
プログラムは前回のものを流用します。
【WPF】右クリックメニューでデータグリッドの内容をコピーする
chmを作成するソフトについては次の記事を参考にしてください。
Word から chm ファイルを生成する「doc2htmlhelp」
F1キーでヘルプファイルを開けるように画面にバインディングの記述を追加します。
MainWindow.xaml
<Window.InputBindings>
<KeyBinding Gesture="F1" Command="Help" />
</Window.InputBindings>
<Window.CommandBindings>
<CommandBinding Command="Help" Executed="CommandBinding_Executed"/>
</Window.CommandBindings>
PDF表示とは別に、ヘルプ表示用のメニューを追加します。
MainWindow.xaml
<Menu Style="{StaticResource menu-normal}" Background="#e7efff" Height="auto" Width="auto" Margin="0,0,0,20">
<MenuItem Header="ファイル(_F)" >
<MenuItem x:Name="menu_exit" Header="終了(_X)" Click="menu_exit_Click"/>
</MenuItem>
<MenuItem Header="その他(_O)">
<MenuItem x:Name="menu_pdfview" Header="サンプルPDF表示(_P)" Click="menu_pdfview_Click"/>
<MenuItem x:Name="menu_chmview" Header="ヘルプ表示(_H)" Click="menu_chmview_Click"/>
</MenuItem>
</Menu>
ソリューション・エクスプローラーからプロジェクトの「参照」を右クリックし、「参照の追加」を選択します。
「System.Windows.Forms」を選択して、「OK」ボタンをクリックします。
プロジェクト直下に作成した「chm」ファイルを追加します。
chmディレクトリに、作成したファイルをペーストします。
アセンブリからアプリケーション実行ディレクトリを取得するためのライブラリをインポートします。
MainWindow.xaml.cs
using System.Reflection;
F1キー、メニューから呼び出すメソッドを追加します。
MainWindow.xaml.cs
/// <summary>
/// ヘルプファイルを表示します.
/// </summary>
private void ShowHelp()
{
Assembly mainAssembly = Assembly.GetExecutingAssembly();
String appDir = System.IO.Path.GetDirectoryName(mainAssembly.Location);
System.Windows.Forms.Help.ShowHelp(null, "file://" + appDir + "/chm/開発環境構築手順書.chm");
}
F1キー、ヘルプメニュークリック時のイベントメソッドを追加します。
/// <summary>
/// F1キーでヘルプ表示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
logger.Info("F1押下");
ShowHelp();
}
/// <summary>
/// ヘルプ表示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void menu_chmview_Click(object sender, RoutedEventArgs e)
{
logger.Info("ヘルプメニュークリック");
ShowHelp();
}
ヘルプメニューに追加した「ヘルプ表示」を選択します。
無事にヘルプファイルの表示ができました。
全然関係内容ですが。。
アプリケーションのヘルプはPDFもいいですが、こういったヘルプファイルだとキーワード検索が簡単にできたり、
目次から目的のヘルプを探しやすいのでユーザーフレンドリーかもしれませんね。
ではでは。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント