ContentControls.cs
C# VB
//// This code is part of Document Solutions for Word demos.// Copyright (c) MESCIUS inc. All rights reserved.//using System;using System.Drawing;using GrapeCity.Documents.Word;
namespace DsWordWeb.Demos{ // This sample demonstrates how to add content controls to a document. public class ContentControls { public GcWordDocument CreateDocx() { var doc = new GcWordDocument(); // Heading: var p = doc.Body.Paragraphs.Add("Content Control Examples"); p.Style = doc.Styles[BuiltInStyleId.Heading1]; p = doc.Body.Paragraphs.Add( "Below are some examples of content controls. Open the document in MS Word to see the controls in action."); p.Style = doc.Styles[BuiltInStyleId.Subtitle];
// // ContentControlType.DropdownList: // p = doc.Body.Paragraphs.Add("ContentControlType.DropdownList"); p.Style = doc.Styles[BuiltInStyleId.Heading2]; p = doc.Body.Paragraphs.Add("Select a fruit from the dropdown list control: "); p.Style = doc.Styles[BuiltInStyleId.Subtitle];
var dropDownListCtrl = p.GetRange().ContentControls.Add(ContentControlType.DropdownList, false); dropDownListCtrl.DropDownItems.Add(new DropDownItem("apple", "Apples")); dropDownListCtrl.DropDownItems.Add(new DropDownItem("orange", "Oranges")); dropDownListCtrl.DropDownItems.Add(new DropDownItem("banana", "Bananas")); dropDownListCtrl.DropDownItems.Add(new DropDownItem("pear", "Pears"));
// Add placeholder to the building blocks gallery: BuildingBlock dropDownPlaceholder = doc.GlossaryDocument.BuildingBlocks.Add("dropdownlist-placeholder", "General", type: BuildingBlockType.ContentControlPlaceholder);
//set placeholder text Paragraph pp = dropDownPlaceholder.Body.Paragraphs.Add("Click to pick"); //apply style to placeholder element pp.GetRange().Runs.First.Style = p.ParentBody.Document.Styles[BuiltInStyleId.Strong]; //...and change its color pp.GetRange().Runs.First.Font.Color.RGB = Color.DarkSeaGreen;
p.GetRange().Runs.Add(" The green 'Click to pick' text on the left is a placeholder, replaced with the picked fruit when you've selected one.");
// Set control border color: dropDownListCtrl.Color.RGB = Color.OrangeRed; // Set control text color: dropDownListCtrl.Font.Color.RGB = Color.DarkOrange;
// Use building blocks placeholder on the DropDownList contentControl. dropDownListCtrl.ShowingPlaceholderText = true; dropDownListCtrl.PlaceholderText = dropDownPlaceholder;
// // ContentControlType.Text // p = doc.Body.Paragraphs.Add("ContentControlType.Text"); p.Style = doc.Styles[BuiltInStyleId.Heading2]; p = doc.Body.Paragraphs.Add("ContentControlType.Text allows entering a single run of text in the control. " + "All text in a Text control has the same formatting. In this case we use 'Block Text' paragraph style."); p.Style = doc.Styles[BuiltInStyleId.Subtitle];
var textCtrl = doc.Body.ContentControls.Add(ContentControlType.Text, false); p = textCtrl.Content.GetRange().Paragraphs.Add( "This is the default content of the only run in the only paragraph in a Text content control.", doc.Styles[BuiltInStyleId.BlockText]);
// This code demonstrates that only one paragraph, and only one run in it, // can exist in a Text control. Both statements under 'try' clauses will fail: try { textCtrl.Content.GetRange().Paragraphs.Add("Another paragraph (cannot be added)."); } catch (InvalidContentControlSingleChildException) { Console.WriteLine("Cannot have more than one paragraph to a Text content control."); } try { p.GetRange().Runs.Add("Another run (cannot be added)."); } catch (InvalidContentControlSingleChildException) { Console.WriteLine("Cannot have more than one run to a Text content control."); }
// // ContentControlType.RichText // p = doc.Body.Paragraphs.Add("ContentControlType.RichText"); p.Style = doc.Styles[BuiltInStyleId.Heading2]; p = doc.Body.Paragraphs.Add("ContentControlType.RichText allows having multiple paragraphs, with multiple runs, " + "in a single RichText content control."); p.Style = doc.Styles[BuiltInStyleId.Subtitle];
var richtext = doc.Body.ContentControls.Add(ContentControlType.RichText, false); var p1 = richtext.Content.GetRange().Paragraphs.Add("First paragraphs in the "); p1.GetRange().Runs.Add("RichText ", doc.Styles[BuiltInStyleId.Strong]); p1.GetRange().Runs.Add("content control."); var p2 = richtext.Content.GetRange().Paragraphs.Add("Second paragraphs in the "); p2.GetRange().Runs.Add("RichText ", doc.Styles[BuiltInStyleId.Strong]); p2.GetRange().Runs.Add("content control.");
p2.Style = doc.Styles[BuiltInStyleId.IntenseQuote];
// // ContentControlType.BuildingBlockGallery // p = doc.Body.Paragraphs.Add("ContentControlType.BuildingBlockGallery"); p.Style = doc.Styles[BuiltInStyleId.Heading2]; p = doc.Body.Paragraphs.Add("ContentControlType.BuildingBlockGallery allows selecting items from " + "building block galleries. Here we allow to select an equation from the built-in Word equations gallery."); p.Style = doc.Styles[BuiltInStyleId.Subtitle];
// We create a content control that allows selecting equations from // the built-in Word equations gallery: var galleryControl = doc.Body.ContentControls.Add(ContentControlType.BuildingBlockGallery); galleryControl.BuildingBlockCategory = "Built-In"; galleryControl.BuildingBlockGallery = "Equations";
// // ContentControlType.Group // p = doc.Body.Paragraphs.Add("ContentControlType.Group"); p.Style = doc.Styles[BuiltInStyleId.Heading2]; p = doc.Body.Paragraphs.Add("ContentControlType.Group allows creating groups with modifiable " + "and constant (non-modifiable) content. Here we create a checkbox with a non-modifiable label on its right."); p.Style = doc.Styles[BuiltInStyleId.Subtitle];
// Group content control prevent some kinds of modifications of children controls. // Add a group content control that will be used as parent container for // child controls: var groupControl = doc.Body.ContentControls.Add(ContentControlType.Group, false);
// Note how to add ContentControls inside another ContentControl: // Do not use groupControl.GetRange().ContentControls.Add(...), // instead use groupControl.Content.GetRange().ContentControls.Add(...): p = groupControl.Content.GetRange().Paragraphs.Add(); var checkBox = p.GetRange().ContentControls.Add(ContentControlType.CheckBox, true);
checkBox.Title = "Grouped checkbox"; checkBox.Checked = true;
p.GetRange().Runs.Add(" Text to the right of the checkbox");
// Date: groupControl.Content.GetRange().Paragraphs.Add("Finally, we add a ContentControlType.Date control that shows the current date.");
// Add a Date control var date = groupControl.Content.GetRange().ContentControls.Add(ContentControlType.Date, false); date.DateFormat = "u"; date.Date = Util.TimeNow();
// In the Group contentControl, we have: // - a checkbox content control // - a text to its left // - a paragraph // - a date content control // Due to being inside Group content control, text cannot be changed unless // you disable grouping (Word->Developer->Group and select Ungroup).
// Done: return doc; } }}