1

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

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

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

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

有任何想法吗?提前致谢。:)

4

1 回答 1

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 标题,然后我只是拆分文本以保留值并将样式应用于单元格。

于 2012-05-11T14:11:36.797 回答