You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 07:22:34