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

时间:2018-03-15 15:53:01

标签: c# office-interop

注意:我正在使用Office Word 2007

我需要用组合框,复选框,文本等替换Word文档的特定部分。 我使用正则表达式找到“标签”,然后迭代正则表达式匹配以获取要替换的特定文本。

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对象,但不是类型复选框)。调试它没有帮助,因为它只是停止调试器。

enter image description here

我尝试了另一个类似的stackoverflow线程,但是使用FormField代替ContentControl只会添加一个灰色复选框,默认情况下是禁用的,并且以编程方式不可更改。

我做错了什么或者在Office版本中无法做到这一点?或两者兼而有之?

1 个答案:

答案 0 :(得分:0)

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