如何使用 Microsoft Word 互操作书签 C# 选中一个框

How to check a box using Microsoft Word Interop Bookmarks C#

我正在尝试使用 C# 的 Microsoft Word Interop 修改包含表单域和复选框的文档。我已经成功地使用以下代码更新了表单字段,但我不知道如何将复选框标记为 "checked"

我在表单中创建了一个需要更新的项目列表,每个表单项目都有一个 BookmarkTag 和相应的数据字符串:

string filename = @"C:\Users\...docx"; //removed for brevity

Application wordApp = null;
wordApp = new Application();
wordApp.Visible = false;
Document wordDoc = wordApp.Documents.Add(filename);

List<FormItem> formItems = new List<FormItem>
    {
        new FormItem { BookmarkTag = "author", Data = doc.Author.DisplayName },
        new FormItem { BookmarkTag = "phonenumber", Data = doc.Author.PhoneNumber },
    };

foreach(var formItem in formItems)
{
    if (!String.IsNullOrWhiteSpace(formItem.Data))
    {
        Bookmark bookmark = wordDoc.Bookmarks[formItem.BookmarkTag];
        bookmark.Select();
        wordApp.Selection.TypeText(formItem.Data);
    }
}

显然这只适用于文本项,但我如何识别像 "checkbox1" 这样的书签并将其值标记为 "checked"?

感谢您的帮助!

在处理表单域时,最好处理表单域对象而不是书签名称。书签名称用作 FormFields 集合的索引值。

例如:

object bookmark1 = "bkm1";
object bookmark2 = "bkm2";
wordDoc.FormFields[ref bookmark1].Result = "Text in textbox";
wordDoc.FormFields[ref bookmark2].CheckBox.Value = true;