SHOEISHA iD

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

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

ComponentZine(ComponentOne)

.NETでプレビュー機能を持ったリッチテキストエディタを作る

Preview for .NETコンポーネントの便利なテクニック

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

プレビューの処理

 これも実に簡単で、C1PrintDocumentコンポーネントのプロパティに、RichTextコントロールのデータを設定するだけです。後は、すべてC1PrintDocumentコンポーネントが処理を行ってくれます。

 この処理は、ツールバーの[プレビュー]ボタンに設定します。

 まず、Form2への参照が行えるように、Form2のインスタンスを作成します。そして、C1PrintDocumentコンポーネントのBodyオブジェクトの中のChildrenコレクションに、RichTextコントロールのデータを追加します。このとき、RenderRichTextメソッドを使用して、RichTextコントロールのリッチテキストデータを、RenderObjectにしてから追加します。

 C1PrintDocumentコンポーネントのBodyオブジェクトは、プレビューのページ本体を表すオブジェクトで、プレビューに表示されるデータは「レンダリングオブジェクト」と呼ばれるオブジェクトで表されます。このBodyオブジェクトのChildrenコレクションには、ドキュメントのすべてのレンダリングオブジェクトが含まれるので、ここにRichTextコントロールのデータをレンダリングオブジェクトにして追加する、という形を取ります。

 一方、RichTextコントロールのデータを取得するにはいくつかの方法があります。Textプロパティは純粋なテキストデータのみを格納するプロパティで、Rtfプロパティは文字属性を含めたリッチテキストデータを格納するプロパティです。従って、ユーザーが設定したフォントや文字色も含めたデータを取得したければ、Rtfプロパティを参照し、この値を取り出して使用します。

 RenderRichTextメソッドは、このRtfデータをそのままレンダリングオブジェクトに変換してくれるメソッドなので、これを使うことでRichTextコントロールで設定された文字属性をそのままC1PrintPreviewControlコンポーネントで表示させることができるようになります。

VB.NET
Private Sub ToolStripButton3_Click(ByVal sender As System.Object,_
      ByVal e As System.EventArgs) Handles ToolStripButton3.Click
    Dim previewform As New Form2
    With previewform
        .C1PrintDocument1.Body.Children.Add( _
            New RenderRichText(RichTextBox1.Rtf))
        .C1PrintDocument1.Generate()
        .Show()
    End With
End Sub
C#.NET
private void toolStripButton3_Click(object sender, EventArgs e)
{
    Form2 pf = new Form2();
    pf.Show();
    pf.c1PrintDocument1.Body.Children.Add(
      new C1.C1Preview.RenderRichText(richTextBox1.Rtf));
    pf.c1PrintDocument1.Generate();
}

 Form2の処理コードはありません。プレビューの拡大表示や印刷処理、ファイルへの保存処理などはすべてC1PrintPreviewControlコンポーネントに組み込まれています。

まとめ

 印刷プレビュー機能は、表示倍率の設定やペインによるページ指定、複数ページの表示機能など多彩な機能を持たせる必要があり、これを自作するとなると相当大変な作業になります。C1PrintPreviewControlコンポーネントは、これらプレビューに必要な機能をすべて実装しており、プロパティやメソッドの操作ですぐにアプリケーションに組み込める、大変魅力的なコンポーネントです。このコンポーネントを使うことで開発の工数をかなり削減させることができるのではないでしょうか。

 今回は簡単なワープロを作ってみましたが、画像処理ソフトや表計算、データベースのフロントエンドアプリケーションでも印刷・プレビュー機能を組み込むことができ、その守備範囲はかなり広いものになっています。

 いろいろなアプリケーションを作ってみたくなる、便利なコンポーネントだと言えます。

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

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

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1610 2008/08/20 13:50

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング