【问题标题】:C# WPF - String (stored in Database) From/To RichTextBoxC# WPF - 字符串(存储在数据库中)From/To RichTextBox
【发布时间】:2012-10-24 16:34:18
【问题描述】:

我花了一天的时间在互联网上搜索我的问题的解决方案,但没有成功......这在理论上似乎很简单。

我在 XAML 中有一个 RichTextBox。 我的数据库中有一个名为“内容”的字段,类型为“LongText”

我只希望我的数据库以简单的样式(粗体、斜体、下划线)保存 RichTextBox 的内容,并且我可以调用我的数据库,填充存储在我的数据库中的 RichTextBox 内容,同时保持文本的样式。

之后,我必须将这些数据显示为博客,但...必须已经成功保存和加载数据。

XAML:

<RichTextBox x:Name="nameTextEditor" TabIndex="2" Grid.Row="2" SpellCheck.IsEnabled="True">

C#

FlowDocument doc = new FlowDocument();
        StringReader sr = new StringReader(monArticle.Content);
        XmlReader xmlReader = XmlReader.Create(sr);
        Section sec = XamlReader.Parse(monArticle.Content) as Section;
        while (sec.Blocks.Count > 0)
        {
            var block = sec.Blocks.FirstBlock;
            sec.Blocks.Remove(block);
            doc.Blocks.Add(block);
        }
        nameTextEditor.Document = doc;

不要处理错误: “异常 XamlParseException” "Données non valides au niveau racine。Ligne 1,位置 1。"

这不是我尝试过的唯一代码,但我一个字都不懂……为什么“获取 RichTextBox 的内容”和“发送到我的数据库”并不那么容易?!

感谢大家的帮助

【问题讨论】:

    标签: c# database xaml binding richtextbox


    【解决方案1】:
        var doc = rtb.Document;
        var range = new TextRange(doc.ContentStart, doc.ContentEnd);
        var ms = new MemoryStream();
        range.Save(ms, DataFormats.Rtf);
        ms.Seek(0, SeekOrigin.Begin);
    
        var rtfString=new StreamReader(ms).ReadToEnd();
    

    现在将 rtfString 发送到数据库。 要在富文本框中重新显示它:

    var doc = rtb.Document;
    var range = new TextRange(doc.ContentStart, doc.ContentEnd);
    var ms = new MemoryStream();
    var sw = new StreamWriter(ms);
    sw.Write(rtfString);
    sw.Flush();
    ms.Seek(0, SeekOrigin.Begin);
    range.Load(ms, DataFormats.Rtf);
    

    【讨论】:

    • 谢谢,我明天上班时间试试
    • ...(精度)稍作修改
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    相关资源
    最近更新 更多