Datagridview Cells使用RTF字符串进行样式设置

时间:2012-04-24 06:35:38

标签: c# parsing datagridview rtf

我正在使用 C#应用程序(Windows窗体),该应用程序具有保存在数据库中的DataGridView(每个单元格都被视为字符串)。我想要做的是添加一个按钮,使文本(或单元格BackColor )着色,这样当我打印(在纸上)我的数据库内容时,颜色会保持不变。 / p>

我在想的是将单元格字符串转换为RTF但我真的不知道如何为单元格执行此操作本地不支持RTF 。我想尽可能避免将DataGridView更改为丰富的DataGridView,所以我想知道我是否可以在保存彩色单元格时添加此字符串:

  

" {\ rtf1 \ fbidis \ ansi \ ansicpg1252 \ deff0 \ deflang1036 {\ fonttbl {\ f0 \ fswiss \ fprq2 \ fcharset0 Microsoft Sans Serif;} {\ f1 \ fnil \ fcharset0 Microsoft Sans Serif;}}   {\ colortbl; \ red255 \ green0 \ blue0;}   \ viewkind4 \ uc1 \ pard \ ltrpar \ cf1 \ f0 \ fs17" + cell.Value.ToString()+" \ cf0 \ f1 \ par"

棘手的是,当我打开我的应用程序时,我想要读取每个单元格的字符串,并将RTF样式应用于单元格样式。例如,我保存一个包含" hello"的红色单元格,当我打开我的应用程序时,我希望单元格为红色,但是当我打印(再次打印纸张)时,我希望文本为红色(因此解析RTF打开以将文本与格式分开。)

有什么想法吗?提前致谢。 :)

1 个答案:

答案 0 :(得分:0)

忘了说我找到了正确的RTF字符串,它是以下内容:

"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1036{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Microsoft Sans Serif;}{\\f1\\fnil\\fcharset0 Microsoft Sans Serif;}}{\\colortbl ;\\red255\\green0\\blue0;}\\viewkind4\\uc1\\pard\\cf1\\f0\\fs17 " + value + "\\cf0\\f1}";

启动应用程序时,我只检查字符串是否包含RTF标题,然后我只是拆分文本以保留值并将样式应用于单元格。