将复选框添加到 Office Word C# Interop

Adding a Checkbox to Office Word C# Interop

注意:我使用的是 Office Word 2007

我需要用组合框、复选框、文本等替换 Word 文档的特定部分。 我发现 "tags" 使用正则表达式,然后迭代正则表达式匹配以获取要替换的特定文本。

var range = doc.Content; // where doc is current active word document
var matches = GetRegexMatches();
foreach (var match in matches){        
    if(range.Find.Execute(match.Value)){ // match.Value equals to the "tag" im searching
        range.Collapse();
        Word.ContentControl checkbox = range.ContentControls.Add(Word.WdContentControlType.wdContentControlCheckbox);
        checkbox.Checked = true;
    }
}

这段代码添加了一些奇怪的框(我猜是一个 ContentControl 对象,但不是复选框类型)。调试它没有帮助,因为它只是停止调试器。

我尝试关注另一个类似的 Whosebug 线程,但是使用 FormField 而不是 ContentControl 只是添加了一个灰色复选框,默认情况下它是禁用的并且无法通过编程更改。

是我做错了什么,还是这个Office版本做不到?或者两者兼而有之?

显然,如果您使用的是 Office 2010+,并且您尝试打开的文档是在 2010 之前的版本中创建的,那么它会在 Compatibility Mode 中打开,这会禁用许多新的功能,以免破坏文件。这包括组合框、复选框等。除了在新 Office 版本中打开文档并将其保存为较新版本之外,没有解决此问题的方法。