我有一个使用内容控件生成 Open XML 文档的应用程序。
要创建一个新的内容控件,我使用 Interop 和方法ContentControls.Add
。此方法返回添加的内容控件的实例。
我有一些逻辑可以保存内容控件的 id 以供以后引用,但是在某些计算机中我遇到了一个奇怪的问题。
当我访问刚刚创建的Content Control的ID属性时,它返回一个带有数字id的字符串,问题是当这个值太大时,我保存文档后,如果我查看document.xml中的生成的文档,<w:id/>
元素的<w:sdtPr/>
元素有一个负值,即我从Id
生成控件的属性中得到的值的有符号等价物。
例如:
var contentControl = ContentControls.Add(...);
var contentControlId = contentControl.ID;
// the value of contentControlId is "3440157266"
如果我保存文档并在包资源管理器中打开它,Id
内容控件的值为“-854810030”而不是“3440157266”。
我发现是这样的:
((int)uint.Parse("3440157266")).ToString() returns "-854810030"
知道为什么会这样吗?这个问题很难复制,因为我不控制Id
生成的控件,它Id
是由互操作库自动生成的。