答案 0 :(得分:2)
您可以将自定义列与富文本框一起使用。看一眼 this tutorial
答案 1 :(得分:-1)
从this post那里获得解决方案
添加cellpainting事件处理方法可以完美解决此问题。
void datagridview_CellPainting(object sender,DataGridViewCellPaintingEventArgs e)
{
if(datagridview.Columns[e.ColumnsIndex].Name=="content")
{
string content="this is a test message,to illustrate this words fine";
string []line=content.Split(',');
StringFormat sf=new StringFormat();
sf.Alignment=StringAlignment.Center;
sf.LineAlignment=StringAlignment.Center;
e.Paint(e.CellBounds, DataGridViewPaintParts.All&~DataGridViewPaintParts.ContentForeground);
SizeF []size=new SizeF[line.Length];
for(int i=0;i<line.Length;++i)
{
size[i]=e.Graphics.MeasureString(line[i],e.CellStyle.Font);
}
RectangleF rec=new RectangleF(e.CellBounds.Location,new Size(0,0));
using(SolidBrush bblack=new SolidBrush(Color.Black),bred=new
SolidBrush(Color.Red))
{
for(int i=0;i<line.Length;++i)
{
rec=new RectangleF(new
PointF(rec.Location.X+rec.Width,rec.Location.Y),new
SizeF(size[i].Width,e.CellBounds.Height));
if(i%2==0)
{
e.Graphics.DrawString(line[i], e.CellStyle.Font, bred, rec, sf);
}
else
{
e.Graphics.DrawString(line[i].e.CellStyle.Font, bblack, rec, sf);
}
}
}
e.Handled=true;
}
}
上面的代码在列内容的单元格中显示“这是一个很好地说明此单词的测试消息”,其中“ this 是红色的测试消息,黑色是“很好地说明这个词”。