RichTextBox控件

RichTextBox控件用法

基本用法

基本用法不做赘述

富文本用法

RTF文档是纯文本文件,可以在不同的软件,和平台之间进行交换和共享,且可以保留文本样式、字体、颜色等格式信息,也可以添加表格。

RichTextBox控件中支持RTF格式的文档,可以使流水日志具有各种各样的格式,从而方便查看

绘制表格

规则如下

{\rtf1\ansi\deff0{\fonttbl{\f0 Arial;}}
{\colortbl ;\red0\green0\blue0;}
\pard\plain\fs20
\trowd\trgaph70
\intbl\cellx3000 Column1\cell\cellx6000 Column2\cell\cellx9000 Column3\cell\row
\intbl
2024/2/7 14:59:03\cell Data 1-2\cell Data 1-3\cell \row
\intbl
2024/2/7 14:59:03\cell Data 2-2\cell Data 2-3\cell \row
\intbl
2024/2/7 14:59:03\cell Data 3-2\cell Data 3-3\cell \row
\intbl
2024/2/7 14:59:03\cell Data 4-2\cell Data 4-3\cell \row
\intbl
2024/2/7 14:59:03\cell Data 5-2\cell Data 5-3\cell \row

效果
image

代码实现

private void button1_Click(object sender, EventArgs e)
{
    DataTable dataTable = new DataTable();
    dataTable.Columns.Add("Column1");
    dataTable.Columns.Add("Column2");
    dataTable.Columns.Add("Column3");
    for (int i = 1; i <= 5; i++)
    {
        dataTable.Rows.Add($"{DateTime.Now}", $"Data {i}-2", $"Data {i}-3");
    }
    // 将 DataTable 转换为 RTF 格式
    string rtf = DataTableToRtf(dataTable);
    // 将 RTF 格式的内容设置为 RichTextBox 的内容
    // 将光标定位到文本末尾
    richTextBox1.SelectionStart = richTextBox1.TextLength;
    // 设置富文本
    richTextBox1.SelectedRtf = rtf;
    richTextBox1.AppendText(rtf);
}
// 将 DataTable 转换为 RTF 格式
string DataTableToRtf(DataTable dataTable)
{
    StringBuilder rtf = new StringBuilder();
    rtf.AppendLine(@"{\rtf1\ansi\deff0{\fonttbl{\f0 Arial;}}"); // 定义字体
    rtf.AppendLine(@"{\colortbl ;\red0\green0\blue0;}"); // 定义颜色
    rtf.AppendLine(@"\pard\plain\fs20"); // 设置默认字号
    rtf.AppendLine(@"\trowd\trgaph70"); // 设置表格行间距
    // 添加表头
    rtf.Append($@"\intbl");
    // 添加表头
    foreach (DataColumn column in dataTable.Columns)
    {
        rtf.Append($@"\cellx{3000 * (dataTable.Columns.IndexOf(column) + 1)} {column.ColumnName}\cell");
    }
    rtf.AppendLine(@"\row");
    // 添加表格内容
    foreach (DataRow row in dataTable.Rows)
    {
        rtf.AppendLine(@"\intbl");
        foreach (object cell in row.ItemArray)
        {
            rtf.Append(cell.ToString() + @"\cell ");
        }
        rtf.AppendLine(@"\row");
    }
    return rtf.ToString();
}
posted @ 2024-02-07 15:19  回首起了风沙  Views(59)  Comments(0Edit  收藏  举报