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

时间:2016-10-10 08:59:59

标签: c# .net checkbox ms-office office-interop

我正在尝试使用Microsoft.Office.Interop.Word创建一个包含复选框的Word文档。我使用了以下参考文献:

我已成功生成带有复选框的Word文档,但遗憾的是它已被禁用。我想要实现的是拥有一个可以选中/取消选中的复选框。

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

enter image description here

这是我用来生成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");
    }

如何启用生成的复选框?

1 个答案:

答案 0 :(得分:1)

我建议不要使用FormFields,而是建议使用内容控件。这些更加“用户友好”'并且更容易使用。

更改此行:

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

使用内容控件就可以了(从头到尾)

Word.ContentControl checkbox = para.Range.ContentControls.Add(Word.WdContentControlType.wdContentControlCheckBox);
相关问题