【问题标题】:Create RTF run in flowdocument在 flowdocument 中创建 RTF 运行
【发布时间】:2017-02-13 19:40:29
【问题描述】:

谁能帮我理解RTF?我有一个由一些字符串填充的inputStream

inputStream = new MemoryStream(Encoding.ASCII.GetBytes((myObject.someStr)));

然后这个流传递给flowdocument

FlowDocument fldoc = new FlowDocument();
TextRange tr = new TextRange(
    fldoc.ContentStart, fldoc.ContentEnd);
tr.Load(inputStream, DataFormats.Rtf);

之后我创建自定义文本框来处理 myObject 的属性

Block curBlock = fldoc.Blocks.FirstBlock;
Inline curInline = (currentBlock as Paragraph).Inlines.FirstInline;
Run curRun = (currentInline as Span).Inlines.FirstInline as Run;
return new CustomTextBox(tr, currentRun.ContentStart, myObject)

我的自定义文本框失去焦点后

TextPointer ptr = CurrentRun.ContentStart;
ptr.DeleteTextInRun(ptr.GetTextRunLength(LogicalDirection.Forward));
ptr.InsertTextInRun(mainTextbox.Text);
using (MemoryStream ms = new MemoryStream())
{
    tr.Save(ms, DataFormats.Rtf);
    myObject.someStr = ASCIIEncoding.Default.GetString(ms.ToArray());
}

现在的问题:如果myObject.someStr == "",那么curBlock == null,我不能实例化CustomTextBox。我正在尝试

Paragraph p = new Paragraph();
Span s = new Span();
Run r = new Run(tr.Text);
s.Inlines.Add(r);
p.Inlines.Add(s);
fldoc.Blocks.Add(new Paragraph());
return new CustomTextBox(tr, r.ContentStart, myObject)

,但无论如何 tr 都是空的。我该如何处理?

【问题讨论】:

    标签: c# rtf flowdocument


    【解决方案1】:
    fldoc = new FlowDocument(p);
    

    帮助

    【讨论】:

      猜你喜欢
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 2013-03-19
      相关资源
      最近更新 更多