2019-07-17に投稿

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

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

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

ではでは。

Originally published at www.doraxdora.com

doraxdora

IT関係の仕事をしています/1985年生まれの東京在住/便利なサービスやツール漁りや料理などが好き/2017年~ブログやってます/自分でサービスとか作ってリリースしたい/何かありましたらお気軽にDMどうぞ

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント