2012-04-24 68 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

相關問題