使用 Microsoft.Office.Interop.Word 创建的 Word 文档的复选框已禁用

Checkbox disabled for Word document created using Microsoft.Office.Interop.Word

我正在尝试使用 Microsoft.Office.Interop.Word 创建一个带有复选框的 Word 文档。为此,我使用了以下参考资料:

我已成功生成带有复选框的 Word 文档,但不幸的是它被禁用了。我想要实现的是有一个可以是 checked/unchecked.

的复选框

在下面的屏幕截图中,您可以看到我有 3 个复选框。第一个是使用 Microsoft.Office.Interop.Word 生成的,第二个和第三个是在 Word 2016 中手动创建的。第一个不能标记为 checked/unchecked 而第二个和第三个的行为就像一个普通的复选框

这是我用来生成 Word 文档的代码。

private void btnCreateWordInterop_Click(object sender, EventArgs e)
    {
        Word._Application word_app = new Word.ApplicationClass();
        word_app.Visible = true;

        object missing = Type.Missing;
        Word._Document word_doc = word_app.Documents.Add(ref missing, ref missing, ref missing, ref missing);
        Word.Paragraph para = word_doc.Paragraphs.Add(ref missing);
        para.Range.Text = "Chrysanthemum Curve";
        object style_name = "Heading 1";
        para.Range.set_Style(ref style_name);
        para.Range.InsertParagraphAfter();

        //Microsoft.Office.Interop.Word.Range range = 
        para.Range.Collapse(ref missing);
        Word.FormField checkBox = word_doc.FormFields.Add(para.Range, Word.WdFieldType.wdFieldFormCheckBox);
        para.Range.InsertAfter("  Checkbox generated by Microsoft.Office.Interop.Word");

        // Save the document.
        object filename = @"C:\Users\Username\Desktop\InteropWord.docx";

        word_doc.SaveAs(ref filename, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing,
            ref missing);

        //Close.
        object save_changes = false;
        word_doc.Close(ref save_changes, ref missing, ref missing);
        word_app.Quit(ref save_changes, ref missing, ref missing);

        MessageBox.Show("Saved");
    }

如何启用生成的复选框?

我建议为此使用内容控件,而不是使用 FormFields。这些 'User Friendly' 通常更容易使用。

更改此行:

Word.FormField checkBox = word_doc.FormFields.Add(para.Range, Word.WdFieldType.wdFieldFormCheckBox);

使用内容控件就像(从我的脑海中)

Word.ContentControl checkbox = para.Range.ContentControls.Add(Word.WdContentControlType.wdContentControlCheckBox);