2012-04-24 37 views
1

我正在研究一个C#应用程序(窗体),它有一个DataGridView保存在数据库(每个单元格视为一个字符串)。我想要做的是添加一个按钮,使文本颜色(或单元格背景色)以这种方式打印(在纸上)我的数据库内容,颜色保持不变。datagridview单元格与RTF字符串样式

我在想的是将单元格字符串转换为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 \看齐“

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

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

回答

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}"; 

当启动应用程序我只是检查,如果字符串cointains RTF头,然后我只是文本拆分保持价值并将样式应用于单元格。

+0

嗨Blowi,你似乎有丰富的RichText经验。在VS(C#)值中遇到问题** richTextBox **,因为有时候richTextBox.rtf给出的值以'{\ rtf1 \ ansi \'开头并且有时候开始喜欢'{\ rtf1 \ fbidis \ ansi \ _same content_ in _RichTextbox_和我认为额外的'\ fbidis \'不是正确的标签。 – Tops 2015-09-01 07:10:37

相关问题