DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

複数のRTFファイルを連結してRichTextBoxに表示する

RichTextBoxにRTFを挿入するには、RichTextBox.SelectedRtfプロパティを使用しますが、RTFファイルのテキストをSelectedRtfプロパティに代入することにより、そのフォーマットされた内容がRichTextBoxに挿入されます。つまり複数のRTFファイルを連結してRichTextBoxに表示するには、RTFファイルをテキストとして読み込み、RichTextBoxのSelectionStartを末尾にし、SelectedRtfにRTFファイルのRTFを設定するという作業を繰り返せばよいということになります。

次にRTFファイル"C:\1.rtf"、"C:\2.rtf"、"C:\3.rtf"を連結し、RichTextBox(RichTextBox1)に表示するコードを示します。

VB.NET
コードを隠すコードを選択
'Button1のClickイベントハンドラ
Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
    RichTextBox1.Clear()

    Dim i As Integer
    For i = 1 To 3
        'RTFファイルを読み込む
        Dim sr As New System.IO.StreamReader( _
            "C:\" + i.ToString() + ".rtf", _
            System.Text.Encoding.GetEncoding(932))
        Dim rtf As String = sr.ReadToEnd()
        sr.Close()

        'RichTextBox1に追加する
        AppendRtfToRichTextBox(RichTextBox1, rtf)
    Next i
End Sub

''' <summary>
''' RichTextBoxの末尾にRTFを追加
''' </summary>
''' <param name="rtb">RTFを追加するRichTextBox</param>
''' <param name="rtfText">追加するRTF文字列</param>
Public Shared Sub AppendRtfToRichTextBox( _
    ByVal rtb As RichTextBox, ByVal rtfText As String)
    rtb.SelectionStart = rtb.TextLength
    rtb.SelectedRtf = rtfText
End Sub
C#
コードを隠すコードを選択
//Button1のClickイベントハンドラ
private void Button1_Click(object sender, System.EventArgs e)
{
    RichTextBox1.Clear();

    for (int i = 1; i <= 3; i++)
    {
        //RTFファイルを読み込む
        System.IO.StreamReader sr =
            new System.IO.StreamReader(
            "C:\\" + i.ToString() + ".rtf",
            System.Text.Encoding.GetEncoding(932));
        string rtf = sr.ReadToEnd();
        sr.Close();

        //RichTextBox1に追加する
        AppendRtfToRichTextBox(RichTextBox1, rtf);
    }
}

/// <summary>
/// RichTextBoxの末尾にRTFを追加
/// </summary>
/// <param name="rtb">RTFを追加するRichTextBox</param>
/// <param name="rtfText">追加するRTF文字列</param>
public static void AppendRtfToRichTextBox(
    RichTextBox rtb, string rtfText)
{
    rtb.SelectionStart = rtb.TextLength;
    rtb.SelectedRtf = rtfText;
}

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。
  • イベントハンドラの意味が分からない、C#のコードをそのまま書いても動かないという方は、こちらをご覧ください。
  • Windows Vista以降でUACが有効になっていると、ファイルへの書き込みに失敗する可能性があります。詳しくは、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。