CustomScript

ページ

2014年11月24日月曜日

WPF勉強(3) RichTextBoxで色付きログ表示

  • .Net4.5
ログ表示用のRichTextBoxアクセサクラスを作りました。
通常ログ(Log)はそのまま、エラーログ(LogError)は赤く表示します。

/// <summary>
/// RichTextBoxを色付きログ出力用に拡張
/// </summary>
public class LogTextBox
{
    public RichTextBox RichTextBox { set; get; }

    // コンストラクタ
    public LogTextBox(RichTextBox richTextBox)
    {
        RichTextBox = richTextBox;
    }

    // クリア
    public void Clear()
    {
        var paragraph = RichTextBox.Document.Blocks.LastBlock as Paragraph;
        paragraph.Inlines.Clear();
    }

    // テキスト追加
    public virtual void WriteLine(string text, Brush brush = null)
    {
        var paragraph = RichTextBox.Document.Blocks.LastBlock as Paragraph;

        // 書き込み
        if (brush != null)
        {
            // 色付きでテキスト追加
            var span = new Span { Foreground = brush };
            span.Inlines.Add(text + "\n");
            paragraph.Inlines.Add(span);
        }
        else
        {
            // そのままテキスト追加
            paragraph.Inlines.Add(text + "\n");
        }

        // 最終行にスクロール
        RichTextBox.ScrollToEnd();
    }

    // 通常ログ
    public void Log(object message)
    {
        WriteLine(message.ToString());
    }

    // 警告ログ
    public void LogWarning(object message)
    {
        WriteLine(message.ToString(), Brushes.Orange);
    }

    // エラーログ
    public void LogError(object message)
    {
        WriteLine(message.ToString(), Brushes.Red);
    }
}

RichTextBoxではFlowDocumetで内容が構成されており、その構成は複雑で、ちょっと色を付けるだけでも手間がかかります。

参考URL
http://msdn.microsoft.com/ja-jp/library/aa970779%28v=vs.110%29.aspx
http://noizy-radio.blogspot.jp/2013/02/wpfrichtextbox_22.html
http://blogs.wankuma.com/naka/archive/2008/07/13/148706.aspx

0 件のコメント:

コメントを投稿