将复选框添加到 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 版本中打开文档并将其保存为较新版本之外,没有解决此问题的方法。
注意:我使用的是 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 版本中打开文档并将其保存为较新版本之外,没有解决此问题的方法。