1

我想在将文本复制到时保持文本的格式,我richtextbox该怎么做?(当您在 microsoft word 文档中复制代码时,代码的颜色将与 Visual Studio 中的颜色相同(在此处显示http://img4.fotos-hochladen.net/uploads/unbenannanta2k46fcjn5.png))

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

4

2 回答 2

2

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

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;
    }
}
于 2013-03-21T12:53:33.990 回答
-1

使用RichTextBox的Rtf属性

richtextbox1.Rtf=> 存储到数据库

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

于 2013-03-21T12:39:52.660 回答