【问题标题】:Checkbox disabled for Word document created using Microsoft.Office.Interop.Word为使用 Microsoft.Office.Interop.Word 创建的 Word 文档禁用复选框
【发布时间】:2016-10-10 08:59:58
【问题描述】:

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

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

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

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

如何启用生成的复选框?

【问题讨论】:

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


    【解决方案1】:

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

    改变这一行:

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

    使用内容控件就像(从我的头顶)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多