SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)

PDF/HTML文書の閲覧・印刷機能を持ったWPFアプリケーションの作成

ComponentOne Studioを活用したWindowsフォームアプリケーションの作成

  • このエントリーをはてなブックマークに追加

GUIの作成

 では、さっそくアプリケーションを作成していきます。

 使用するコントロールは、C1ReportViewerコントロールとボタンコントロール2つだけです。ボタンコントロールは、ドキュメントの読み出しと削除を実行するために使用します。この機能は、C1ReportViewerコントロールにはないので、ボタンコントロールを使用することにしました。

 ボタンコントロールには、Backgroundプロパティにアイコンイメージを組み込み、Clickイベントハンドラを作成します。

ウィンドウのレイアウト
ウィンドウのレイアウト

GUIの作成

 では、GUIを作成していきます。

 ① プロジェクトに次のアイコンファイルを2つ追加します。

  • openfolderHS.png
  • DeleteHS.png

 ② ツールボックスからC1ReportViewerコントロールをウィンドウにドラッグ&ドロップします。

 ③ C1ReportViewerコントロールのツールバーの横に、ボタンを2つ配置します。そして、Contentプロパティの値を削除し、それぞれのボタンのBackgroundプロパティにアイコンイメージを組み込みます。

ボタンにアイコンイメージを組み込む
ボタンにアイコンイメージを組み込む

 ④ ボタンのClickイベントハンドラを作成します。

 ⑤ XAMLのC1ReportViewer要素にあるレイアウト関係のプロパティをすべて削除し、Nameプロパティを設定します。

 これで、レイアウトはできあがりです。

<my:C1ReportViewer Name="C1ReportViewer1" />
完成したレイアウト
完成したレイアウト

ドキュメント読み出しの処理

 配置した2つのButtonコントロールで、HTML/PDFドキュメントの読み出しと表示のクリアを実行する処理を組み込みます。

 まず、最初のボタン「Button1」では、「ファイルを開くダイアログボックス」を表示してファイル名を取得し、C1ReportViewerコントロールのLoadDocumentメソッドの引数に指定してメソッドを実行します。

 このメソッドを実行するだけで、選択したドキュメントを読み込み表示します。

 また、表示しているドキュメントを消去するには、C1ReportViewerコントロールのCloseDocumentメソッドを実行します。引数はありません。

 なおC1ReportViewerコントロールは、ドキュメントを表示しているときに別のファイルを開くと、開いたファイルの内容で表示が更新されます。

Visual Basic
Class MainWindow
    Public Sub New()

        ' この呼び出しはデザイナーで必要です。
        InitializeComponent()

        ' InitializeComponent() 呼び出しの後で初期化を追加します。

    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
        Dim dlg As New Microsoft.Win32.OpenFileDialog()
        Dim filename As String = ""
        Dim data As String = ""
        dlg.FileName = "*.*"
        dlg.Filter = "すべてのファイル |*.*"

        Dim result As Boolean = dlg.ShowDialog()
        If result = True Then
            Me.C1ReportViewer1.LoadDocument(dlg.FileName)
        End If

    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button2.Click
        Me.C1ReportViewer1.CloseDocument()
    End Sub
End Class
C#
namespace ReportViewer_WPF_cs
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
            String filename = "";
            String data = "";
            dlg.FileName = "*.*";
            dlg.Filter = "すべてのファイル |*.*"; 

            bool? result = dlg.ShowDialog();
            if(result == true)
            {
                C1ReportViewer1.LoadDocument(dlg.FileName);
            }
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            C1ReportViewer1.CloseDocument();
        }
    }
}

 以上で出来上がりです。

C1RichTextBoxコントロールで作成したHTMLドキュメントも表示し印刷することができる
C1RichTextBoxコントロールで作成したHTMLドキュメントも表示し印刷することができる

まとめ

 このように、C1ReportViewerコントロールは、HTMLとPDF形式の文書を表示し、印刷・保存・検索などの機能が使用できます。組み込みのツールバーと機能を持っているため、アプリケーションへの組み込みも非常に簡単で、コードレスな実装が可能です。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7543 2013/12/13 17:30

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング