C#中怎么在richtextbox中实现表格功能,最好有段源代码

如题
我就是不知道怎么写啊?请大家帮帮我
非常感谢‘江湖新秀’的帮忙,这些我是明白的,我想实现,比如指定行数,列数,行高,列高,生成一个表格,一个单击事件就能搞定,我马上给分,谢谢。也就是写一个模块生成这段代码:"{\\rtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052{\\fonttbl{\\f0\\fnil\\fprq2\\fcharset134 \\'cb\\'ce\\'cc\\'e5;}{\\f1\\fnil\\fcharset134 \\'cb\\'ce\\'cc\\'e5;}}\\viewkind4\\uc1\\trowd\\trgaph108\\trleft-108\\trbrdrt\\brdrs\\brdrw10 \\trbrdrl\\brdrs\\brdrw10 \\trbrdrb\\brdrs\\brdrw10 \\trbrdrr\\brdrs\\brdrw10 \\clbrdrt\\brdrw15\\brdrs\\clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs \\cellx2732\\clbrdrt\\brdrw15\\brdrs\\clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs \\cellx5573\\clbrdrt\\brdrw15\\brdrs\\clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs \\cellx8414\\pard\\intbl\\kerning2\\f0\\fs21\\cell\\cell\\cell\\row\\intbl\\cell\\cell\\cell\\row\\pard\\lang2052\\kerning0\\f1\\fs18\\par}";
最新回答
看不见的坚强

2024-11-03 15:31:19

richtextbox本身就有表格显示的功能。你在word中制作好表格,在复制到richtextbox中就Ok了。因为richtextbox支持rtf格式。rtf可以实现字体结构的不同程序间相互的转移。
你要想点个什么事件后产生表格,就要自己写了。使用DHTML COM

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
richTextBox2.Rtf = "{\\rtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052{\\fonttbl{\\f0\\fnil\\fprq2\\fcharset134 \\'cb\\'ce\\'cc\\'e5;}{\\f1\\fnil\\fcharset134 \\'cb\\'ce\\'cc\\'e5;}}\\viewkind4\\uc1\\trowd\\trgaph108\\trleft-108\\trbrdrt\\brdrs\\brdrw10 \\trbrdrl\\brdrs\\brdrw10 \\trbrdrb\\brdrs\\brdrw10 \\trbrdrr\\brdrs\\brdrw10 \\clbrdrt\\brdrw15\\brdrs\\clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs \\cellx2732\\clbrdrt\\brdrw15\\brdrs\\clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs \\cellx5573\\clbrdrt\\brdrw15\\brdrs\\clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs \\cellx8414\\pard\\intbl\\kerning2\\f0\\fs21\\cell\\cell\\cell\\row\\intbl\\cell\\cell\\cell\\row\\pard\\lang2052\\kerning0\\f1\\fs18\\par}";
}

private void richTextBox1_TextChanged(object sender, EventArgs e)
{
//richTextBox2.Text = richTextBox1.Text;
richTextBox2.Text = richTextBox1.Rtf;
//toolStripStatusLabel1.Text = richTextBox1.Text;
}

private System.ComponentModel.IContainer components = null;

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Windows 窗体设计器生成的代码

/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.richTextBox2 = new System.Windows.Forms.RichTextBox();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
this.statusStrip1.SuspendLayout();
this.SuspendLayout();
//
// richTextBox1
//
this.richTextBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.richTextBox1.Location = new System.Drawing.Point(0, 0);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(292, 161);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = "";
this.richTextBox1.TextChanged += new System.EventHandler(this.richTextBox1_TextChanged);
//
// richTextBox2
//
this.richTextBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.richTextBox2.Location = new System.Drawing.Point(0, 157);
this.richTextBox2.Name = "richTextBox2";
this.richTextBox2.Size = new System.Drawing.Size(292, 91);
this.richTextBox2.TabIndex = 1;
this.richTextBox2.Text = "";
//
// statusStrip1
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabel1});
this.statusStrip1.Location = new System.Drawing.Point(0, 251);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(292, 22);
this.statusStrip1.TabIndex = 2;
this.statusStrip1.Text = "statusStrip1";
//
// toolStripStatusLabel1
//
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
this.toolStripStatusLabel1.Size = new System.Drawing.Size(131, 17);
this.toolStripStatusLabel1.Text = "toolStripStatusLabel1";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.richTextBox2);
this.Controls.Add(this.richTextBox1);
this.Name = "Form1";
this.Text = "Form1";
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();

}

#endregion

private System.Windows.Forms.RichTextBox richTextBox1;
private System.Windows.Forms.RichTextBox richTextBox2;
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;

}
}

需要什么(图片,表格)就复制到框1里,框2就会显示出代码。这样你可能会更明白吧!
灬陌玍亽゛

2024-11-03 07:37:49

RichTextBox控件使用OLEObjects集合支持嵌入的对象。每个嵌入控件中的对象都表示为一个OLEObject对象。这允许文档中创建的控件可以包含其他控件或文档。例如,可以创建一个包含Microsoft Excel报表、Microsoft Word文档或任何在系统中注册的其他OLE对象的文档。要在RichTextBox控件中插入对象,可以简单地拖住一个文件(如使用Windows 95的Explorer)或其他应用程序(如Microsoft Word)中所用文件的加亮部分(选择部分),将其直接放到该RichTextBox控件上。
喵咕酱

2024-11-03 07:35:34

C#的RichTextBox中插入表格:表格在RichTextBox的RTF代码基本相似,只有几个参数的值会与插入表格的行列,宽窄不同而不同。在C#中直接调用insertTable()即可在RichTextBox中插入一个表格。参数放在Class1.Class文件中。
public void insertTable()
{
int leftSpace = Class1.leftSpace; //文本与左边框的距离
int rowNumber = Class1.rowNumber; //行数
int colNumber = Class1.colNumber; //列数
int tableWidth = Class1.tableWidth; //单元格宽度
int tableHeight = Class1.tableHeight; //行高
string alignType = Class1.alignType; //居左,居中,居右
int redColor = Class1.redColor; //颜色
int greenColor = Class1.greenColor;
int blueColor = Class1.blueColor;
int firstWidth = tableWidth - leftSpace; //第一个单元格参数,以后每个加tableWidth
string tableStr = "{\\rtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052{\\fonttbl{\\f0\\fnil\\fprq2\\fcharset134 \\'cb\\'ce\\'cc\\'e5;}{\\f1\\fnil\\fcharset134\\'cb\\'ce\\'cc\\'e5;}}{\\colortbl;\\red" + redColor.ToString() + "\\green" + greenColor.ToString() + "\\blue" + blueColor.ToString() + ";}\\viewkind4\\uc1\\trowd\\trgaph" + leftSpace.ToString() + "\\trleft-" + leftSpace.ToString() + "\\trq" + alignType + "\\trbrdrt\\brdrs\\brdrw10\\brdrcf1\\trbrdrl\\brdrs\\brdrw10\\brdrcf1\\trbrdrb\\brdrs\\brdrw10\\brdrcf1\\trbrdrr\\brdrs\\brdrw10\\brdrcf1\\clbrdrt\\brdrw15\\brdrs\\clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs";
tableStr += "\\cellx" + firstWidth.ToString() + "\\clbrdrt\\brdrw15\\brdrs\\clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs ";
for (int i = 2; i < colNumber; i++)
{
firstWidth += tableWidth;
tableStr += "\\cellx" + firstWidth.ToString() + "\\clbrdrt\\brdrw15\\brdrs\\clbrdrl\\brdrw15\\brdrs\\clbrdrb\\brdrw15\\brdrs\\clbrdrr\\brdrw15\\brdrs ";
}
firstWidth += tableWidth;
tableStr += "\\cellx" + firstWidth.ToString() + "\\pard\\intbl\\kerning2\\f0\\fs" + tableHeight.ToString();
string cellStr = "";
for (int i = 0; i < colNumber; i++)
{
cellStr += "\\cell";
}
tableStr += cellStr + "\\row ";
string rowStr = "\\intbl" + cellStr + "\\row ";
for (int i = 1; i < rowNumber; i++)
{
tableStr += rowStr;
}
tableStr += "\\pard\\lang2052\\kerning0\\f1\\fs18\\par }";
richTextBox4.SelectedRtf = tableStr;
}