【发布时间】:2026-01-05 06:35:01
【问题描述】:
我有一个使用内容控件生成 Open XML 文档的应用程序。
要创建一个新的内容控件,我使用 Interop 和方法 ContentControls.Add。此方法返回添加的内容控件的实例。
我有一些逻辑可以保存内容控件的 id 以供以后引用,但在某些计算机上我遇到了一个奇怪的问题。
当我访问刚刚创建的内容控件的ID属性时,它返回一个带有数字id的字符串,问题是当这个值太大时,我保存文档后,如果我查看document.xml 在生成的文档中,<w:sdtPr/> 元素的<w:id/> 元素有一个负值,即我从生成控件的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 是由 Interop 库自动生成的。
【问题讨论】:
标签: ms-word interop openxml word-contentcontrol