【WPF】chm ヘルプファイルを表示する
おはようございます。
昨日に引き続きWPFのネタ。
以前、Wordからchmファイルを作るソフトの紹介をしましたが、それで作成したファイルをWPFで表示する方法を調べてみました。
Windowsフォームであれば専用のクラスがあるのですが、WPF用のものは無いみたいなので、Windowsフォームのライブラリを利用して表示します。
プログラムは前回のものを流用します。
chmを作成するソフトについては次の記事を参考にしてください。
スポンサーリンク
画面の修正
バインディングの追加
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」ファイルを追加します。
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もいいですが、こういったヘルプファイルだとキーワード検索が簡単にできたり、
目次から目的のヘルプを探しやすいのでユーザーフレンドリーかもしれませんね。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません