CustomScript

2014年11月24日月曜日

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

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

    //============================================================================
    /// 
    /// RichTextBoxを色付きログ出力用に拡張
    /// 
    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 件のコメント:

コメントを投稿