BETA

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

投稿日:2019-07-17
最終更新:2019-07-17

前回に引き続き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」ファイルを追加します。

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もいいですが、こういったヘルプファイルだとキーワード検索が簡単にできたり、
目次から目的のヘルプを探しやすいのでユーザーフレンドリーかもしれませんね。

ではでは。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@doraxdoraの技術ブログ 主に Java, C#, Python, Javascript の記事を載せていく予定。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう