【WPF】chm ヘルプファイルを表示する

2017年11月25日C#,開発

おはようございます。

昨日に引き続き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ファイルの追加

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();
        }

起動してみる

ヘルプメニュー

ヘルプメニューに追加した「ヘルプ表示」を選択します。

chmファイルの表示

無事にヘルプファイルの表示ができました。

全然関係内容ですが。。

まとめ

アプリケーションのヘルプはPDFもいいですが、こういったヘルプファイルだとキーワード検索が簡単にできたり、
目次から目的のヘルプを探しやすいのでユーザーフレンドリーかもしれませんね。

ではでは。

スポンサーリンク


関連するコンテンツ

2017年11月25日C#,開発C#,WPF,プログラミング

Posted by doradora