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コントロールは、ドキュメントを表示しているときに別のファイルを開くと、開いたファイルの内容で表示が更新されます。
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
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(); } } }
以上で出来上がりです。
まとめ
このように、C1ReportViewerコントロールは、HTMLとPDF形式の文書を表示し、印刷・保存・検索などの機能が使用できます。組み込みのツールバーと機能を持っているため、アプリケーションへの組み込みも非常に簡単で、コードレスな実装が可能です。