2016-10-10 8 views
0

Microsoft.Office.Interop.Wordを使用してチェックボックスを含むWord文書を作成しようとしています。私はそうするために、次の参照を使用していますMicrosoft.Office.Interop.Wordを使用して作成されたWord文書のチェックボックスが無効になっています

私は成功し、チェックボックスでWord文書を生成したが、残念ながらそれが無効になっています。私が達成しようとしているのは、チェック/チェックを外すことができるチェックボックスを持つことです。

以下のスクリーンショットでは、3つのチェックボックスがあることがわかります。第一1はMicrosoft.Office.Interop.Wordを使用して生成され、2番目と3番目のものは、2番目と3番目のものは

enter image description here

普通のチェックボックスのように動作しながら、最初の1がチェック/未チェックとしてマークすることはできませんの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"); 
    } 

生成されたチェックボックスを有効にするにはどうすればよいですか?

答えて

1

FormFieldを使用する代わりに、コンテンツコントロールを使用することをおすすめします。これらはより多くの「ユーザーフレンドリー」であり、一般的に扱いやすくなっています。

変更この行:

それは(私の頭の上から)ようなものになるだろうコンテンツコントロールを使用して
Word.FormField checkBox = word_doc.FormFields.Add(para.Range, Word.WdFieldType.wdFieldFormCheckBox); 

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

は少年ああ!出来た!ありがとう! – jmc

関連する問題