当前位置: 首页 > news >正文

WinForm利用 RichTextBox组件实现输出各种颜色字体日志信息

引言

   利用颜色来更好辨别输出日志信息,好了其他的不多说了,直接奔入主图吧。

效果图

实现代码
/// <summary>
/// 输出并设置字体颜色
/// </summary>
/// <param name="msg"></param>
/// <param name="color"></param>
private void WiterLog(string msg, Color color)
{this.Invoke(new Action(() =>{txtBoxResultInfo.SuspendLayout();txtBoxResultInfo.SelectionStart = txtBoxResultInfo.TextLength;txtBoxResultInfo.SelectionLength = 0;txtBoxResultInfo.SelectionColor = color;txtBoxResultInfo.AppendText(msg + Environment.NewLine);txtBoxResultInfo.SelectionColor = txtBoxResultInfo.ForeColor;// 滚动到TextBox的最后一行txtBoxResultInfo.ScrollToCaret();txtBoxResultInfo.ResumeLayout();}));
}

完整的示例代码

namespace WinFormsApp1
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){Random rand = new Random();for (int i = 1; i <= 50; i++){// 生成随机颜色Color randomColor = Color.FromArgb(rand.Next(100, 256),rand.Next(100, 256),rand.Next(100, 256));// 生成随机文字string text = GenerateRandomString();WiterLog($"{i}、{text}", randomColor);}}private string GenerateRandomString(){Random rand = new Random();int length = rand.Next(20, 50);// 常见汉字字符集string chineseChars = "的一是了我不人在有他这为之大来以个中上们到说国和地也子时道出而于就得里后自之者发经行家方如事成";// 生成随机中文字符char[] chars = new char[length];for (int i = 0; i < length; i++){chars[i] = chineseChars[rand.Next(chineseChars.Length)];}return new string(chars);}/// <summary>/// 输出并设置字体颜色/// </summary>/// <param name="msg"></param>/// <param name="color"></param>private void WiterLog(string msg, Color color){this.Invoke(new Action(() =>{txtBoxResultInfo.SuspendLayout();txtBoxResultInfo.SelectionStart = txtBoxResultInfo.TextLength;txtBoxResultInfo.SelectionLength = 0;txtBoxResultInfo.SelectionColor = color;txtBoxResultInfo.AppendText(msg + Environment.NewLine);txtBoxResultInfo.SelectionColor = txtBoxResultInfo.ForeColor;// 滚动到TextBox的最后一行txtBoxResultInfo.ScrollToCaret();txtBoxResultInfo.ResumeLayout();}));}}
}

设计器代码

namespace WinFormsApp1
{partial class Form1{/// <summary>///  Required designer variable./// </summary>private System.ComponentModel.IContainer components = null;/// <summary>///  Clean up any resources being used./// </summary>/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>protected override void Dispose(bool disposing){if (disposing && (components != null)){components.Dispose();}base.Dispose(disposing);}#region Windows Form Designer generated code/// <summary>///  Required method for Designer support - do not modify///  the contents of this method with the code editor./// </summary>private void InitializeComponent(){panel1 = new Panel();button1 = new Button();panel2 = new Panel();txtBoxResultInfo = new RichTextBox();panel1.SuspendLayout();panel2.SuspendLayout();SuspendLayout();// // panel1// panel1.Controls.Add(button1);panel1.Location = new Point(12, 12);panel1.Name = "panel1";panel1.Size = new Size(1050, 91);panel1.TabIndex = 0;// // button1// button1.Location = new Point(375, 5);button1.Name = "button1";button1.Size = new Size(243, 59);button1.TabIndex = 0;button1.Text = "开始生成随机字体颜色";button1.UseVisualStyleBackColor = true;button1.Click += button1_Click;// // panel2// panel2.Controls.Add(txtBoxResultInfo);panel2.Location = new Point(19, 125);panel2.Name = "panel2";panel2.Size = new Size(1043, 531);panel2.TabIndex = 1;// // txtBoxResultInfo// txtBoxResultInfo.BackColor = SystemColors.InfoText;txtBoxResultInfo.Location = new Point(3, 0);txtBoxResultInfo.Name = "txtBoxResultInfo";txtBoxResultInfo.Size = new Size(1040, 528);txtBoxResultInfo.TabIndex = 0;txtBoxResultInfo.Text = "";// // Form1// AutoScaleDimensions = new SizeF(11F, 24F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(1074, 668);Controls.Add(panel2);Controls.Add(panel1);Name = "Form1";Text = "Form1";panel1.ResumeLayout(false);panel2.ResumeLayout(false);ResumeLayout(false);}#endregionprivate Panel panel1;private Button button1;private Panel panel2;private RichTextBox txtBoxResultInfo;}
}

界面

http://www.dtcms.com/a/321152.html

相关文章:

  • MMBFJ310LT1G一款N沟道JFE 晶体管适用于高频放大器和振荡器等射频应用MMBFJ310LT1
  • STM32CubeMX(十二)SPI驱动W25Qxx(Flash)
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-视频列表与视频播放
  • 【嵌入式C语言】
  • C语言:结构体
  • mac电脑解决在不同项目需要频繁手动切换node版本的困扰
  • Autosar AP功能组状态和模型进程是否预定义后不改变了?
  • Mac 电脑放在环境变量中的通用脚本
  • 从浅拷贝到深拷贝:C++赋值运算符重载的核心技术
  • SITIME汽车时钟发生器Chorus保障智能汽车安全
  • 《告别Bug!GDB/CGDB调试实战指南》
  • 「iOS」————优先级反转
  • 解决Docker部署的MySQL8错误日志里面的 mbind: Operation not permitted 问题
  • 构建安全 Web 应用:从用户认证与授权到 JWT 原理解析
  • python使用python-docx自动化操作word
  • 【杂谈】-逆缩放悖论:为何更多思考会让AI变“笨“?
  • Numpy科学计算与数据分析:Numpy布尔索引与花式索引实战
  • 一种对白点进行多重加权并利用三角剖分插值微调白平衡增益的白平衡矫正算法
  • RAG问答系统:Spring Boot + ChromaDB 知识库检索实战
  • 3D Tiles 格式中,Bounding Volum
  • 基于AutoDL平台的3D_Gaussian_Splatting初体验
  • 在 Vue 中使用 ReconnectingWebSocket实现即时通讯聊天客服功能
  • 2025 前端真实试题-阿里面试题分析
  • 关于数据结构6-哈希表和5种排序算法
  • Maptalks vs Cesium
  • 【最新版】2025年搜狗拼音输入法
  • “电子合同”为什么会出现无效的情况?
  • OpenCV cv2.flip() 函数详解与示例
  • 深入理解 Java AWT Container:原理、实战与性能优化
  • ORACLE看当前连接数的方法