【问题标题】:Datagridview Cells Styling with RTF string使用 RTF 字符串设置 Datagridview 单元格样式
【发布时间】:2012-04-24 06:35:38
【问题描述】:

我正在开发一个 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 以分开格式中的文本)。

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

【问题讨论】:

    标签: c# parsing datagridview rtf


    【解决方案1】:

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

    【讨论】:

    • 您好 Blowi,您似乎对 RichText 有丰富的经验。在 VS (C#) 值中遇到问题 richTextBox 因为有时richTextBox.rtf 给出的值以 {\rtf1\ansi` and sometimes starts likes {\rtf1\fbidis\ansi` 开头,用于 same content i>RichTextbox 我认为附加的 `\fbidis` 不是正确的标签。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2012-08-04
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多