Infopath : 如何通过代码复制格式文本框的值

昨天被人问到这样的一个问题:在Infopath表单中,有两个格式文本框,希望通过代码的方式来复制其内容。但复制过去之后,第二个文本框不能实现换行。下面是截图

image

之前的代码是下面这样的:

this.CreateNavigator().SelectSingleNode("/my:myFields/my:NewText", NamespaceManager).SetValue(
               CreateNavigator().SelectSingleNode("/my:myFields/my:OriginalText", NamespaceManager).Value);

其实,上面的代码在针对一些标准的文本框或者下拉框的话,是没有任何问题的。但针对格式文本框,则有问题。为什么这么说呢?因为格式文本框里面不仅仅有文本,还有格式。例如换行,粗体,颜色等等。

那么一个格式文本框,到底如何表示这些东西的呢?其实是一个XML片段

<html xmlns="http://www.w3.org/1999/xhtml">
  <div>我是陈希章</div>
  <div> </div>
  <div>来自上海</div>
  <div> </div>
  <div> </div>
  <div> </div>
</html>

它用了div来实现换行,为什么呢?因为div默认的display为block,该效果类似<p/>

那么,应该如何修改代码来实现我们复制格式文本框的目的呢?

this.CreateNavigator().SelectSingleNode("/my:myFields/my:NewText", NamespaceManager).InnerXml =
    CreateNavigator().SelectSingleNode("/my:myFields/my:OriginalText", NamespaceManager).InnerXml;

 

image

原文地址:https://www.cnblogs.com/chenxizhang/p/1585355.html