将文本的颜色保存在数据库中,并将带有颜色的文本复制到richtextbox中

本文关键字:文本 有颜色 复制 richtextbox 保存 存在 数据库 颜色 | 更新日期: 2023-09-27 18:04:58

我想保持文本的格式,当我把它复制到richtextbox,我怎么能做到这一点?(当你在microsoft word文档中复制代码时,代码的颜色将与Visual studio中相同(在这里显示http://img4.fotos-hochladen.net/uploads/unbenannta2k46fcjn5.png))

我想保存在sql数据库中的文本,并以相同的格式(颜色等)重新加载。我知道如何保存和读取数据库中的数据,但我怎么能保存格式(颜色)的文本?

将文本的颜色保存在数据库中,并将带有颜色的文本复制到richtextbox中

您也可以将隐藏在RichTextBox.Document中的FlowDocument保存为字符串

public static string ToStringExt(this IDocumentPaginatorSource flowDocument)
{
    return XamlWriter.Save(flowDocument);
}

转换回FlowDocument你可以使用这个扩展

public static bool IsFlowDocument(this string xamlString)
{
    if (xamlString.IsNullOrEmpty()) 
        throw new ArgumentNullException();
    if (xamlString.StartsWith("<") && xamlString.EndsWith(">"))
    {
        XmlDocument xml = new XmlDocument();
        try
        {
            xml.LoadXml(string.Format("<Root>{0}</Root>", xamlString));
            return true;
        }
        catch (XmlException)
        {
            return false;
        }
    }
    return false;
}
public static FlowDocument toFlowDocument(this string xamlString)
{
    if (IsFlowDocument(xamlString))
    {
        var stringReader = new StringReader(xamlString);
        var xmlReader = System.Xml.XmlReader.Create(stringReader);
        return XamlReader.Load(xmlReader) as FlowDocument;
    }
    else
    {
        Paragraph myParagraph = new Paragraph();
        myParagraph.Inlines.Add(new Run(xamlString));
        FlowDocument myFlowDocument = new FlowDocument();
        myFlowDocument.Blocks.Add(myParagraph);
        return myFlowDocument;
    }
}

使用RichTextBox的Rtf属性

richtextbox1.Rtf =>存储到数据库

从数据库中检索并恢复richtextbox1.Rtf中的值