UWP RichEditBox启用数学模式后处理多行文本抛出异常及问题
UWP RichEditBox数学模式多行文本操作异常问题
我在UWP中使用RichEditBox,通过以下代码启用数学模式API:
LimitedAccessFeatures.TryUnlockFeature(...); RichEditBox.TextDocument.SetMathMode(RichEditMathMode.MathOnly);
当在该RichEditBox中输入多行文本后,调用RichEditBox.TextDocument.GetText(TextGetOptions.FormatRtf, out string rtf)、RichEditBox.TextDocument.SetText(TextSetOptions.FormatRtf, value)时,会抛出异常:
System.AccessViolationException: 'Attempted to read or write protected memory. This is often an indication that other memory is corrupt.'
使用RichEditBox.LoadFromStream(...)和RichEditBox.SaveToStream(...)处理多行文本时也存在相同问题。
此外,输入多行文本后调用RichEditBox.TextDocument.GetMath(out string math),返回的math为空字符串,单行文本时可正常工作。
复现步骤
- 为RichEditBox启用数学模式API
- 将AcceptsReturn属性设为true
- 在RichEditBox中输入多行文本
- 调用以下任一语句:
RichEditBox.TextDocument.GetText(TextGetOptions.FormatRtf, out string rtf)RichEditBox.TextDocument.SetText(TextSetOptions.FormatRtf, value)RichEditBox.LoadFromStream(...)RichEditBox.SaveToStream(...)
已尝试的解决方案
通过以下代码成功获取富文本:
RichEditBox.TextDocument.SetMathMode(RichEditMathMode.NoMath); RichEditBox.TextDocument.GetText(TextGetOptions.FormatRtf, out string rtf); RichEditBox.TextDocument.SetMathMode(RichEditMathMode.MathOnly);
但该方法仅对GetText有效,对SetText无效——调用后仅设置换行符'\n',所有字符均为'\0'。
内容的提问来源于stack exchange,提问作者Mubarrat
相关产品推荐
相关产品推荐

