C# 实现UI界面输出日志


前言

在开发桌面应用程序时,将日志输出到UI界面是一种常见的需求,尤其是在调试和错误跟踪时。C#提供了多种方式来实现这一功能,包括使用TextBox、RichTextBox、ListBox等控件。本笔记将记录如何使用RichTextBox控件在WinForms应用程序中实现日志输出。
效果如图
在这里插入图片描述


一、 RichTextBox 控件

RichTextBox 控件是WinForms中用于显示和编辑富文本的控件。它支持多种文本格式,包括粗体、斜体、下划线等,并且可以包含文本和图像。在输出日志时,RichTextBox控件可以提供比TextBox控件更丰富的视觉体验。

二、创建WinForms项目

三、添加RichTextBox控件

从工具箱拖转RichTextBox控件到窗体,默认命名richTextBox1。

四、创建日志类

public class LogHelper
{

    private RichTextBox _richTextBox;

    public LogHelper(RichTextBox richTextBox)
    {
        this._richTextBox = richTextBox;
    }

    private void LogMessage(string message, LogLevel logLevel)
    {
        _richTextBox.SelectionStart = _richTextBox.TextLength;
        _richTextBox.SelectionLength = 0;

        switch (logLevel)
        {
            case LogLevel.Info:
                _richTextBox.SelectionColor = Color.Green;
                break;
            case LogLevel.Error:
                _richTextBox.SelectionColor = Color.Red;
                break;
        }

        _richTextBox.AppendText(message);
        _richTextBox.SelectionColor = _richTextBox.ForeColor;
        _richTextBox.ScrollToCaret();
    }


    public void Log(string message, LogLevel logLevel = LogLevel.Info)
    {
        string logMessage = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss} - {logLevel.ToString().ToUpper()} - {message}{Environment.NewLine}" ;
        if (_richTextBox.InvokeRequired)
            _richTextBox.Invoke(new MethodInvoker(() => LogMessage(logMessage, logLevel)));
        else
        {
            LogMessage(logMessage, logLevel);
        }
    }
}
public enum LogLevel
{
    Info,
    Error
}

五、使用日志类

窗体上添加2个按钮模拟输出日志

private LogHelper _logHelper;

public Form1()
{
    InitializeComponent();

    _logHelper = new LogHelper(this.richTextBox1);

    _logHelper.Log("程序启动");
}
 private void button1_Click(object sender, EventArgs e)
 {
     _logHelper.Log("我是正常日志", LogLevel.Info);
 }

 private void button2_Click(object sender, EventArgs e)
 {
 	  //模拟异步调用
     Task.Run(() => { 
         _logHelper.Log("我是异常日志(异步的)", LogLevel.Error);
     });
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值