Добавление элементов управления содержимым в документы Word
В проектах на уровне документа Word элементы управления содержимым можно добавлять в документ во время разработки или во время выполнения. В проектах надстройки VSTO для Word элементы управления содержимым можно добавлять в любой открытый документ во время выполнения.
Область применения. Сведения в этом разделе относятся к проектам уровня документа и проектам надстроек VSTO для Word. Дополнительные сведения см. в разделе «Функции», доступные по Приложение Office ликации и типу проекта.
В этом разделе описываются следующие задачи.
- Добавление элементов управления содержимым во время разработки
- Добавление элементов управления содержимым во время выполнения в проекте уровня документа
- Добавление элементов управления содержимым во время выполнения в проект надстройки VSTO Сведения об элементах управления содержимым см. в разделе «Элементы управления содержимым».
Добавление элементов управления содержимым во время разработки
Вы можете добавить элементы управления содержимым в документ Word в проекте на уровне документа во время разработки несколькими способами.
- Добавьте элемент управления содержимым из вкладки Элементы управления Wordпанели элементов.
- Добавьте элемент управления содержимым в документ так же, как вы добавляете управляемый элемент управления содержимым в Word.
- Перетащите элемент управления в документ из окна Источники данных . Это полезно, если нужно одновременно привязать элемент управления к данным при его создании. Дополнительные сведения см. в разделе «Практическое руководство. Заполнение документов данными из объектов и практическое руководство. Заполнение документов данными из базы данных».
Примечание. Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.
Добавление элемента управления содержимым в документ с помощью панели элементов
- В документе, размещенном в конструкторе Visual Studio, поместите курсор, в который нужно добавить элемент управления содержимым, или выделите текст, который нужно заменить элементом управления содержимым.
- Откройте панель элементов и щелкните вкладку Элементы управления Word .
- Добавьте элемент управления одним из следующих способов.
- Дважды щелкните элемент управления содержимым в панели элементов. or
- Щелкните элемент управления содержимым на панели элементов и нажмите клавишу ВВОД . or
- Перетащите элемент управления содержимым из панели элементов в документ. Элемент управления содержимым добавляется в текущее выделение в документе, а не в позиции указателя мыши.
Невозможно добавить GroupContentControl с помощью панели элементов. GroupContentControl можно добавлять только в Word или во время выполнения.
Visual Studio не предоставляет элемент управления содержимым «Флажок» в панели элементов. Чтобы добавить элемент управления содержимым «Флажок» в документ, необходимо создать ContentControl программно. Дополнительные сведения см. в разделе «Элементы управления содержимым».
Добавление элемента управления содержимым «Флажок» в документ из Word
- В документе, размещенном в конструкторе Visual Studio, поместите курсор, в который нужно добавить элемент управления содержимым, или выделите текст, который нужно заменить элементом управления содержимым.
- На ленте перейдите на вкладку Разработчик .
Примечание. Если вкладка Разработчик не отображается, сделайте ее видимой. Дополнительные сведения см. в разделе «Практическое руководство. Отображение вкладки «Разработчик» на ленте.
Добавление элементов управления содержимым во время выполнения в проекте уровня документа
Элементы управления содержимым можно добавить в документ программным образом во время выполнения с помощью методов свойства Controls класса ThisDocument в проекте. У каждого метода есть три перегрузки, которые можно использовать для добавления элемента управления содержимым следующими способами:
- добавление элемента управления в текущее выделение;
- добавление элемента управления в указанный диапазон;
- добавление элемента управления, основанного на управляемом элементе управления содержимым, в документ. При закрытии документа динамически созданные элементы управления содержимым не сохраняются в документе. Однако неуправляемый элемент управления содержимым остается в документе. Можно повторно создать элемент управления содержимым, основанный на управляемом элементе управления содержимым, при очередном открытии документа. Дополнительные сведения см. в разделе «Добавление элементов управления в документы Office во время выполнения».
Чтобы добавить элемент управления содержимым «Флажок» в документ в проекте Word 2010, необходимо создать объект ContentControl . Дополнительные сведения см. в разделе «Элементы управления содержимым».
Добавление элемента управления содержимым в текущее выделение
- ControlCollection Используйте метод, имеющий Add класс> управления именем (где класс элемента управления — это имя класса элемента управления содержимым, который требуется добавить, напримерAddRichTextContentControl), и имеет один параметр для имени нового элемента управления. Следующий пример кода использует метод AddRichTextContentControl , чтобы добавить новый RichTextContentControl в начало документа. Для выполнения этого кода добавьте код в класс ThisDocument в проекте и вызовите метод AddRichTextControlAtSelection обработчика событий ThisDocument_Startup .
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1; private void AddRichTextControlAtSelection()
Dim richTextControl1 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtSelection() Me.Paragraphs(1).Range.InsertParagraphBefore() Me.Paragraphs(1).Range.Select() richTextControl1 = Me.Controls.AddRichTextContentControl("richTextControl1") richTextControl1.PlaceholderText = "Enter your first name" End Sub
Добавление элемента управления в указанный диапазон
- ControlCollection Используйте метод, имеющий Add > управления именем (где класс элемента управления — это имя класса элемента управления содержимым, который требуется добавить, напримерAddRichTextContentControl), и имеющий Range параметр. Следующий пример кода использует метод AddRichTextContentControl , чтобы добавить новый RichTextContentControl в начало документа. Для выполнения этого кода добавьте код в класс ThisDocument в проекте и вызовите метод AddRichTextControlAtRange обработчика событий ThisDocument_Startup .
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2; private void AddRichTextControlAtRange()
Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtRange() Me.Paragraphs(1).Range.InsertParagraphBefore() richTextControl2 = Me.Controls.AddRichTextContentControl(Me.Paragraphs(1).Range, _ "richTextControl2") richTextControl2.PlaceholderText = "Enter your first name" End Sub
Добавление элемента управления содержимым, основанного на управляемом элементе управления содержимым
- ControlCollection Используйте метод, имеющий Add > управления именем (где класс элемента управления — это имя класса элемента управления содержимым, который требуется добавить, напримерAddRichTextContentControl), и имеющий Microsoft.Office.Interop.Word.ContentControl параметр. В следующем примере кода метод AddRichTextContentControl используется для создания нового объекта RichTextContentControl для каждого управляемого элемента управления форматированием текста, который есть в документе. Для выполнения этого кода добавьте код в класс ThisDocument в проекте и вызовите метод CreateRichTextControlsFromNativeControls обработчика событий ThisDocument_Startup .
private System.Collections.Generic.List richTextControls; private void CreateRichTextControlsFromNativeControls() < if (this.ContentControls.Count <= 0) return; richTextControls = new System.Collections.Generic.List (); int count = 0; foreach (Word.ContentControl nativeControl in this.ContentControls) < if (nativeControl.Type == Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText) < count++; Microsoft.Office.Tools.Word.RichTextContentControl tempControl = this.Controls.AddRichTextContentControl(nativeControl, "VSTORichTextControl" + count.ToString()); richTextControls.Add(tempControl); >> >
Private richTextControls As New System.Collections.Generic.List _ (Of Microsoft.Office.Tools.Word.RichTextContentControl) Private Sub CreateRichTextControlsFromNativeControls() If Me.ContentControls.Count
Добавление элементов управления содержимым во время выполнения в проект надстройки VSTO
Вы можете добавить элементы управления содержимым программным способом в любой открытый документ во время выполнения с помощью надстройки VSTO. Для этого следует создать ведущий элемент Document , основанный на открытом документе, а затем использовать методы свойства Controls этого ведущего элемента. У каждого метода есть три перегрузки, которые можно использовать для добавления элемента управления содержимым следующими способами:
- добавление элемента управления в текущее выделение;
- добавление элемента управления в указанный диапазон;
- добавление элемента управления, основанного на управляемом элементе управления содержимым, в документ. При закрытии документа динамически созданные элементы управления содержимым не сохраняются в документе. Однако неуправляемый элемент управления содержимым остается в документе. Можно повторно создать элемент управления содержимым, основанный на управляемом элементе управления содержимым, при очередном открытии документа. Дополнительные сведения см. в статье "Сохранение динамических элементов управления в документах Office". Дополнительные сведения о создании элементов узла в проектах надстроек VSTO см. в статье Расширение документов Word и книг Excel в надстройках VSTO во время выполнения.
Чтобы добавить элемент управления содержимым «Флажок», необходимо создать объект ContentControl . Дополнительные сведения см. в разделе "Элементы управления содержимым".
Добавление элемента управления содержимым в текущее выделение
- ControlCollection Используйте метод, имеющий Add класс> управления именем (где класс элемента управления — это имя класса элемента управления содержимым, который требуется добавить, напримерAddRichTextContentControl), и имеет один параметр для имени нового элемента управления. Следующий пример кода использует метод AddRichTextContentControl , чтобы добавить новый RichTextContentControl в начало активного документа. Для выполнения этого кода добавьте код в класс ThisAddIn в проекте и вызовите метод AddRichTextControlAtSelection обработчика событий ThisAddIn_Startup .
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1; private void AddRichTextControlAtSelection()
Dim richTextControl1 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtSelection() Dim currentDocument As Word.Document = Me.Application.ActiveDocument currentDocument.Paragraphs(1).Range.InsertParagraphBefore() currentDocument.Paragraphs(1).Range.Select() Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument) richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1") richTextControl1.PlaceholderText = "Enter your first name" End Sub
Добавление элемента управления в указанный диапазон
- ControlCollection Используйте метод, имеющий Add > управления именем (где класс элемента управления — это имя класса элемента управления содержимым, который требуется добавить, напримерAddRichTextContentControl), и имеющий Range параметр. Следующий пример кода использует метод AddRichTextContentControl , чтобы добавить новый RichTextContentControl в начало активного документа. Для выполнения этого кода добавьте код в класс ThisAddIn в проекте и вызовите метод AddRichTextControlAtRange обработчика событий ThisAddIn_Startup .
private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2; private void AddRichTextControlAtRange()
Dim richTextControl2 As Microsoft.Office.Tools.Word.RichTextContentControl Private Sub AddRichTextControlAtRange() Dim currentDocument As Word.Document = Me.Application.ActiveDocument currentDocument.Paragraphs(1).Range.InsertParagraphBefore() Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument) richTextControl2 = extendedDocument.Controls.AddRichTextContentControl( _ extendedDocument.Paragraphs(1).Range, "richTextControl2") richTextControl2.PlaceholderText = "Enter your first name" End Sub
Добавление элемента управления содержимым, основанного на управляемом элементе управления содержимым
- ControlCollection Используйте метод, имеющий Add > управления именем (где класс элемента управления — это имя класса элемента управления содержимым, который требуется добавить, напримерAddRichTextContentControl), и имеющий Microsoft.Office.Interop.Word.ContentControl параметр. В следующем примере кода метод AddRichTextContentControl используется для создания нового объекта RichTextContentControl для каждого управляемого элемента управления форматированием текста в документе после его открытия. Для выполнения этого кода добавьте код в класс ThisAddIn в проекте.
private System.Collections.Generic.List richTextControls; private void Application_DocumentOpen(Microsoft.Office.Interop.Word.Document Doc) < if (Doc.ContentControls.Count >0) < Document extendedDocument = Globals.Factory.GetVstoObject(Doc); richTextControls = new System.Collections.Generic.List (); int count = 0; foreach (Word.ContentControl nativeControl in Doc.ContentControls) < if (nativeControl.Type == Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText) < count++; Microsoft.Office.Tools.Word.RichTextContentControl tempControl = extendedDocument.Controls.AddRichTextContentControl(nativeControl, "VSTORichTextControl" + count.ToString()); richTextControls.Add(tempControl); >> > >
Private richTextControls As New System.Collections.Generic.List _ (Of Microsoft.Office.Tools.Word.RichTextContentControl) Private Sub Application_DocumentOpen(ByVal Doc As Microsoft.Office.Interop.Word.Document) _ Handles Application.DocumentOpen If Doc.ContentControls.Count > 0 Then Dim extendedDocument As Document = Globals.Factory.GetVstoObject(Doc) Dim count As Integer = 0 For Each nativeControl As Word.ContentControl In Doc.ContentControls If nativeControl.Type = Word.WdContentControlType.wdContentControlRichText Then count += 1 Dim tempControl As Microsoft.Office.Tools.Word.RichTextContentControl = _ extendedDocument.Controls.AddRichTextContentControl(nativeControl, _ "VSTORichTextContentControl" + count.ToString()) richTextControls.Add(tempControl) End If Next nativeControl End If End Sub
Для C# необходимо присоединить обработчик Application_DocumentOpen к событию DocumentOpen .
this.Application.DocumentOpen += new Word.ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);
Связанный контент
- Автоматизация Word с помощью расширенных объектов
- Общие сведения о элементах размещения и элементах управления узлами
- Добавление элементов управления в документы Office во время выполнения
- Программные ограничения элементов узла и элементов управления узлами
- Программные надстройки VSTO
- Настройки уровня документа программы
Элементы управления содержимым
Элементы управления содержимым — это отдельные элементы управления, которые можно добавлять и настраивать для использования в шаблонах, формах и документах. Например, у многих веб-форм есть элемент управления "раскрывающийся список", который содержит ограниченный набор вариантов. Элементы управления содержимым могут предоставлять инструкции, а также исчезать при вводе пользователями собственного текста.
Подробные сведения об элементах управления содержимым, включая описания и инструкции для всех их типов, см. в статье Создание форм, предназначенных для заполнения или печати в приложении Word.
Элементы управления содержимым находятся на вкладке Разработчик.
Используйте эту вкладку для их добавления и настройки.
- Выберите Файл >Параметры >Настроить ленту.
- В списке вкладок в разделе Настройка ленты установите флажок Разработчик и нажмите кнопку ОК.
- Выполните одно из указанных ниже действий.
- Чтобы добавить элемент управления, щелкните то место в документе, куда вы хотите его добавить, и выберите нужный элемент управления на вкладке Конструктор.
- Чтобы задать свойства элемента управления или изменить существующий элемент, на вкладке Разработчик в группе Элементы управления нажмите кнопку Свойства.
- Нажмите кнопку Microsoft Office кнопки >параметры Word >популярные.
- Установите флажок Показывать вкладку Разработчик на ленте, а затем нажмите кнопку OК.
- Выполните одно из указанных ниже действий.
- Чтобы добавить элемент управления, щелкните то место в документе, куда вы хотите его добавить, и выберите нужный элемент управления на вкладке Конструктор.
- Чтобы задать свойства элемента управления или изменить существующий элемент, на вкладке Разработчик в группе Элементы управления нажмите кнопку Свойства.
Подробные сведения об элементах управления содержимым, включая описания и инструкции для всех их типов, см. в статье Создание форм, предназначенных для заполнения или печати в приложении Word.
Работа с элементами управления содержимым
Элементы управления контентом — это связанные и, возможно, помеченные фрагменты документа, выполняющие роль контейнеров для определенных типов содержимого. В отдельных элементах управления содержимым могут находиться такие элементы, как даты, списки или абзацы форматированного текста. В некоторых случаях элементы управления содержимым могут напоминать вам о формах. Однако они гораздо более мощные, гибкие и полезные, так как позволяют создавать полнофункционированные структурированные блоки содержимого. Элементы управления содержимым позволяют создавать шаблоны, которые вставляют в документы четко определенные блоки. Элементы управления содержимым позволяют:
- Укажите структурированные регионы в шаблоне. Каждый структурированный регион имеет собственный уникальный идентификатор, который позволяет считывать и записывать в него данные. Примерами типов структурированных областей (или элементов управления содержимым) являются поля со списком, рисунки, текстовые блоки и календари.
- Определите поведение элементов управления содержимым. Каждый элемент управления содержимым занимает часть документа и, как автор шаблона, можно указать, что делает каждый регион. Например, если вы хотите, чтобы область шаблона была календарем, в эту область документа вставляется элемент управления содержимым календаря, который автоматически определяет, что делает этот блок содержимого. Аналогичным образом, если вы хотите, чтобы в разделе шаблона отображалось изображение, создайте элемент управления содержимым рисунка в этой области. Таким образом можно создать шаблон со стандартными типами блоков.
- Ограничьте возможность изменения элементов управления содержимым в документе. Каждый элемент управления содержимым можно ограничить, чтобы его нельзя было удалить или изменить. Это полезно, если, например, у вас есть сведения об авторских правах в шаблоне, который пользователь должен иметь возможность читать, но не редактировать. Или, в качестве другого примера, можно также заблокировать элемент управления содержимым, помещенный в документ шаблона, чтобы пользователь случайно не удалил содержимое, содержащееся в элементе управления содержимым. Это делает шаблоны более надежными, чем в предыдущих версиях.
- Сопоставляйте содержимое элемента управления с данными в пользовательской XML-части. Например, если вставить элементы управления содержимым в виде обычного текста в ячейки таблицы цен на акции, можно сопоставить элементы управления содержимым в ячейках таблицы с узлами в XML-файле, содержащими текущие цены на акции. При изменении цен надстройка может программно обновить вложенный XML-файл, привязанный к каждому элементу управления содержимым в виде обычного текста, и новые обновленные цены автоматически отображаются в таблице.
Самый простой способ создать элемент управления содержимым — использовать пользовательский интерфейс (хотя их также можно создать программным способом). Чтобы создать элемент управления содержимым с помощью пользовательского интерфейса, выберите содержимое, которое нужно преобразовать в элемент управления содержимым (например, текст или рисунок), а затем выберите нужный тип элемента управления содержимым в разделе элементов управления содержимым на ленте разработчика. При этом создается элемент управления содержимым вокруг выбранного содержимого.
Элементы управления содержимым в объектной модели Word
В следующей таблице показаны объекты в объектной модели Word, связанные с элементами управления содержимым.
Имя | Описание |
---|---|
ContentControl | Каждый объект ContentControl представляет отдельный элемент управления содержимым в документе. Используйте коллекцию ContentControls для доступа к отдельным объектам ContentControl . |
ContentControls | Используйте свойства ContentControls объектов Document, Range и Selection для доступа к коллекции элементов управления содержимым. Вы также можете использовать метод SelectContentControlsByTitle и метод SelectContentControlsByTag объекта Document для доступа к коллекции ContentControls , включающей определенные элементы управления содержимым, которые имеют одинаковый заголовок или значение тега. |
ContentControlListEntry | Если элемент управления содержимым является раскрывающимся списком или полем со списком, объект ContentControlListEntry представляет отдельные элементы в списке. |
ContentControlListEntries | Используйте свойство DropdownListEntries объекта ContentControl для доступа ко всем элементам в отдельном раскрывающемся списке или поле со списком. |
Каждый из этих объектов или коллекций имеет методы и свойства, которые позволяют работать с элементами управления содержимым как по отдельности, так и в виде коллекции. Поскольку существуют различные типы элементов управления содержимым (см. следующий раздел "Типы элементов управления содержимым"), объект ContentControl содержит элементы, которые могут не применяться ко всем различным типам элементов управления содержимым. В следующей таблице показаны свойства и методы объекта ContentControl , которые применяются только к определенным типам элементов управления содержимым.
Полный список всех свойств и методов объекта ContentControl см. в разделе Элементы управления содержимым.
Свойство или метод | Группа ресурсов |
---|---|
Свойство BuildingBlockCategory | Элементы управления содержимым коллекции BuildingBlock (wdContentControlBuildingBlockGallery) |
Свойство BuildingBlockType | Элементы управления содержимым коллекции BuildingBlock (wdContentControlBuildingBlockGallery) |
Свойство DateDisplayFormat | Элементы управления содержимым даты (wdContentControlDate) |
Свойство DateDisplayLocale | Элементы управления содержимым даты (wdContentControlDate) |
Свойство DateStorageFormat | Элементы управления содержимым даты (wdContentControlDate) |
Свойство DropdownListEntries | Элементы управления содержимым со списком и раскрывающимся списком (wdContentControlComboBox и wdContentControlDropdownList) |
Свойство MultiLine | Элементы управления с содержимым в виде обычного текста (wdContentControlText) |
Разгруппировать метод | Элементы управления содержимым группы (wdContentControlGroup) |
Метод SetCheckedSymbol | Элемент управления содержимым Check Box (wdContentControlCheckBox) |
Метод SetUncheckedSymbol | Элемент управления содержимым Check Box (wdContentControlCheckBox) |
Типы элементов управления содержимым
Существует восемь различных типов элементов управления содержимым, которые можно добавить в документ, каждый из которых представлен в новом перечислении с именем WdContentControlType.
Тип элемента управления содержимым | Description | Константа WdContentControlType |
---|---|---|
Флажок. | wdContentControlCheckBox | |
Календарь | Средство выбора даты и времени. | wdContentControlDate |
Стандартный блок | Позволяет пользователю выбрать один из указанных стандартных блоков. | wdContentControlBuildingBlockGallery |
раскрывающийся список; | Раскрывающийся список. | wdContentControlDropDownList |
Группа | Определяет защищенную область документа, которую пользователи не могут изменять или удалять. Элемент управления group может содержать любые элементы документа, такие как текст, таблицы, графика и другие элементы управления содержимым. | wdContentControlGroup |
поле со списком; | Поле со списком. | wdContentControlComboBox |
рисунок; | Рисунок. | wdContentControlBlockPicture |
форматированный текст; | Блок форматированного текста. | wdContentControlRichText |
обычный текст; | Блок обычного текста. | wdContentControlText |
События элемента управления содержимым
Помимо свойств и методов, доступных в объектной модели элемента управления содержимым в Word, можно также использовать несколько событий, которые позволяют выполнять код при добавлении или удалении элемента управления содержимым или при изменении элемента управления содержимым пользователем. В следующем списке описано каждое из событий и время выполнения кода события. Все эти события являются членами объекта Document .
Имя события | Description |
---|---|
ContentControlAfterAdd | Происходит после добавления нового элемента управления содержимым в документ. Это событие выполняется независимо от того, добавляет ли пользователь элемент управления содержимым с помощью инструментов в пользовательском интерфейсе или добавляет его с помощью кода. |
ContentControlBeforeContentUpdate | Происходит до того, как Word обновит содержимое в элементе управления содержимым. |
ContentControlBeforeDelete | Происходит до удаления пользователем элемента управления содержимым. Это событие выполняется независимо от того, удаляет ли пользователь элемент управления содержимым с помощью средств в пользовательском интерфейсе или удаляет его с помощью кода. |
ContentControlBeforeStoreUpdate | Происходит до того, как Word обновляет содержимое элемента управления содержимым из данных в хранилище данных документа. |
ContentControlOnEnter | Возникает при вводе пользователем данных в элемент управления контентом. |
ContentControlOnExit | Происходит при выходе пользователя из элемента управления содержимым. |
Работа с кодом
Независимо от того, хотите ли вы добавить элемент управления содержимым, удалить элемент управления содержимым или получить доступ к существующим элементам управления содержимым и управлять им, это можно сделать с помощью кода. В следующих разделах приведено лишь несколько примеров того, что можно сделать.
Добавление элемента управления содержимым
Как упоминалось ранее, существует восемь различных типов элементов управления содержимым, которые можно добавить в документы. Используйте метод Add коллекции ContentControls , чтобы добавить элемент управления содержимым в документ. В следующем примере к активному документу добавляется средство выбора даты и устанавливается значение даты, равное текущей дате.
Sub AddDatePicker() Dim objCC As ContentControl Dim objDate As Date Set objCC = ActiveDocument.ContentControls _ .Add(wdContentControlDate) objDate = Date objCC.Range.Text = objDate End Sub
Используйте одну и ту же базовую конструкцию, чтобы добавить в документ различные типы элементов управления содержимым.
Добавление заголовка в элемент управления содержимым
Используйте свойство Title , чтобы добавить заголовок в элемент управления содержимым. Это текст, который видят пользователи, и он может помочь им узнать, какой тип данных следует вводить в элемент управления содержимым. В следующем примере к активному документу добавляется новый элемент управления с открытым текстом и задается заголовок или отображаемый текст для элемента управления.
Sub SetTitleForContentControl() Dim objCC As ContentControl Set objCC = ActiveDocument.ContentControls _ .Add(wdContentControlText) objCC.Title = "Please enter your name" End Sub
Изменение замещающего текста в элементе управления содержимым
Замещающий текст — это временный текст. Это может быть простое или двухсловное описание (аналогично заголовку) или более подробное описание (например, нумерованные шаги). Изменение замещающего текста одинаково независимо от типа элемента управления содержимым или ожидаемого содержимого элемента управления содержимым. В следующем примере к активному документу добавляется раскрывающийся список, задается замещающий текст элемента управления, а затем он заполняется именами нескольких животных.
Sub SetPlaceholderText() Dim objCC As ContentControl Set objCC = Selection.ContentControls _ .Add(wdContentControlComboBox) objCC.Title = "Favorite Animal" objCC.SetPlaceholderText _ Text:="Please select your favorite animal " 'List entries objCC.DropdownListEntries.Add "Cat" objCC.DropdownListEntries.Add "Dog" objCC.DropdownListEntries.Add "Horse" objCC.DropdownListEntries.Add "Monkey" objCC.DropdownListEntries.Add "Snake" objCC.DropdownListEntries.Add "Other" End Sub
Это лишь несколько способов использования объектной модели для управления элементами управления содержимым в документах. Дополнительные примеры см. в разделе Практическое руководство .
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Элементы управления содержимым
Элементы управления содержимым позволяют разрабатывать документы и шаблоны, которые имеют следующие возможности и функции.
- Пользовательский интерфейс с возможностью управляемого ввода данных, например в виде формы.
- Ограничения, запрещающие пользователям редактировать защищенные разделы документа или шаблона. Дополнительные сведения см. в разделе "Защита частей документов с помощью элементов управления содержимым".
- Привязка данных к источнику данных Дополнительные сведения см. в разделе "Привязка данных к элементам управления содержимым". Область применения. Сведения в этом разделе относятся к проектам уровня документа и проектам надстроек VSTO для Word. Дополнительные сведения см. в разделе "Функции", доступные по Приложение Office ликации и типу проекта. Сведения о связанной демонстрации видео см. в статье "Привязка данных к элементам управления содержимым Word 2007 с помощью Инструменты Visual Studio для системы Office (3.0)".
Сведения о элементах управления содержимым
Элементы управления содержимым предоставляют пользовательский интерфейс, который оптимизирован как для данных, вводимых пользователем, так и для печати. При добавлении элемента управления содержимым в документ этот элемент управления идентифицируется границей, заголовком и временным текстом, который может содержать инструкции для пользователя. Границы и заголовок элемента управления в печатных версиях документа не отображаются.
Например, если требуется, чтобы пользователь мог ввести дату в раздел вашего документа, то в документ можно добавить элемент управления для выбора даты. Когда пользователь щелкает элемент управления, появляется стандартный пользовательский интерфейс выбора даты. Для настройки отображаемого регионального календаря и указания формата даты также можно задать свойства элемента управления. После того как пользователь выберет дату, пользовательский интерфейс элемента управления скрывается и при печати появляется только дата.
Элементы управления содержимым также позволяют выполнять следующие действия.
- Запрет пользователям изменять или удалять части документа. Это удобно, если в документе или шаблоне есть сведения, доступные пользователям для чтения, но не для изменения, или если пользователи должны иметь возможность редактировать элементы управления содержимым, но не удалять их.
- Привязка документа или шаблона к данным. Элементы управления содержимым можно привязать к полям базы данных, управляемым объектам в платформа .NET Framework, XML-элементам, хранящимся в документе, и другим источникам данных. В проектах на уровне документа элементы управления содержимым можно добавлять в документ во время разработки или во время выполнения. В проектах надстройки VSTO элементы управления содержимым можно добавлять в любой открытый документ во время выполнения. Дополнительные сведения см. в статье "Практическое руководство. Добавление элементов управления содержимым в документы Word".
Элементы управления содержимым можно использовать только в документах, сохраненных в формате Open XML. Элементы управления содержимым нельзя использовать в документах, сохраненных в формате документа Word 97-2003 (DOC).
Типы элементов управления содержимым
В документы можно добавлять элементы управления содержимым девяти типов. Большинство элементов управления содержимым имеет соответствующий тип в пространстве имен Microsoft.Office.Tools.Word. Также можно использовать универсальный элемент ContentControl, который может представлять любой из доступных элементов управления содержимым. Пошаговое руководство по использованию каждого из доступных элементов управления содержимым см . в пошаговом руководстве. Создание шаблона с помощью элементов управления содержимым.
Коллекция блоков сборки
Коллекция стандартных блоков позволяет пользователям выбирать из списка стандартных блоков документов для вставки в документ. Стандартный блок документа — это фрагмент содержимого, который был создан для многократного применения, например, общая титульная страница, отформатированная таблица или заголовок. Дополнительные сведения см. в типе BuildingBlockGalleryContentControl. Дополнительные сведения о стандартных блоках см. в статье "Новые возможности для разработчиков в Word 2007".
Флажок
Флажок предоставляет пользовательский интерфейс, который имеет двоичное состояние — установлен или снят.
В отличие от других типов элементов управления содержимым, среда выполнения набор средств Visual Studio для Office не предоставляет определенный тип, представляющий элемент управления содержимым проверка поля. Другими словами, тип CheckBoxContentControl не существует. Тем не менее для создания элемента управления содержимым "флажок" в документ можно программным образом добавить универсальный элемент ContentControl. Дополнительные сведения см. в разделе "Контрольные элементы управления содержимым" в проектах Word.
Поле со списком
Поле со списком отображает список элементов, которые можно выбрать. В отличие от раскрывающегося списка, поле со списком позволяет пользователям добавлять собственные элементы. Дополнительные сведения см. в типе ComboBoxContentControl.
Выбор даты
Управляющий элемент выбора даты предоставляет пользовательский интерфейс календаря для выбора даты. Календарь появляется, когда пользователь щелкает стрелку раскрывающегося списка в элементе управления. Можно использовать региональные календари и различные форматы даты. Дополнительные сведения см. в типе DatePickerContentControl.
Раскрывающийся список
Раскрывающийся список отображает список элементов, которые можно выбрать. В отличие от поля со списком, раскрывающийся список не позволяет пользователям добавлять или изменять элементы. Дополнительные сведения см. в типе DropDownListContentControl.
Групповой
Элемент управления "группа" определяет защищенную область документа, которую нельзя изменять или удалять. Элемент управления "группа" может содержать любые элементы документа, например текст, таблицы, графику и другие элементы управления содержимым. Дополнительные сведения см. в типе GroupContentControl.
Рисунок
Элемент управления "рисунок" отображает изображение. Изображение можно указать во время разработки или во время выполнения, либо пользователь может щелкнуть этот элемент управления, чтобы выбрать изображение для вставки в документ. Дополнительные сведения см. в типе PictureContentControl.
Форматированный текст
Элемент управления "форматированный текст" содержит текст или другие элементы, например таблицы, рисунки или другие элементы управления содержимым. Дополнительные сведения см. в типе RichTextContentControl.
с обычным текстом;
Элемент управления "обычный текст" содержит текст. Элемент управления "обычный текст" не может содержать другие элементы, например таблицы, рисунки или другие элементы управления содержимым. Кроме того, весь текст в элементе управления "обычный текст" имеет одинаковое форматирование. Например, если выделить курсивом одно слово в предложении, которое находится в элементе управления "обычный текст", то курсивом будет выделен весь текст в этом элементе управления. Дополнительные сведения см. в типе PlainTextContentControl.
Универсальный элемент управления содержимым
Универсальный элемент управления содержимым — это объект ContentControl, который может представлять любой из элементов управления содержимым доступного типа. Чтобы объект ContentControl вел себя как элемент управления содержимым другого типа, его можно изменить с помощью свойства Type. Например, если создан объект ContentControl, представляющий элемент управления "обычный текст", его можно изменить во время выполнения так, чтобы он вел себя как поле со списком.
Объекты ContentControl можно создавать только во время выполнения, но не во время разработки. Дополнительные сведения см. в статье "Практическое руководство. Добавление элементов управления содержимым в документы Word".
Общие функции элементов управления содержимым
Большинство элементов управления содержимым имеют общий набор членов, которые можно использовать для выполнения распространенных задач. В следующей таблице указаны некоторые задачи, которые можно выполнять с помощью таких членов.
Для выполнения этой задачи | Процедура |
---|---|
Получение или задание текста, отображаемого в элементе управления. | Используйте свойство Text. Примечание. У PictureContentControl и ContentControl типов нет этого свойства. |
Получение или задание временного текста, отображаемого в элементе управления, пока пользователь не изменит элемент управления, элемент управления не заполнится данными из источника данных или не будет удалено содержимое элемента управления. | Используйте свойство PlaceholderText. Примечание. Тип PictureContentControl не имеет этого свойства. |
Получение или задание заголовка, который отображается на границе элемента управления содержимым, когда пользователь его щелкает. | Используйте свойство Title. |
Автоматическое удаление элемента управления из документа после того, как пользователь изменяет элемент управления. (Текст в элементе управления остается в документе.) | Используйте временное свойство. |
Выполнение кода, когда пользователь щелкает элемент управления содержимым или когда курсор программным образом перемещается в элемент управления содержимым. | Обработайте событие Entering элемента управления. |
Выполнение кода, когда пользователь щелкает вне элемента управления содержимым или когда курсор перемещается программным образом за пределы элемента управления содержимым. | Обработайте событие Exiting элемента управления. |
Выполнение кода после добавления элемента управления содержимым в документ в результате выполнения операции повтора или отмены. | Обработайте событие Added элемента управления. |
Выполнение кода непосредственно перед удалением из документа элемента управления содержимым. | Обработайте событие Deleting элемента управления. |
Защита частей документов с помощью элементов управления содержимым
При защите части документа вы запрещаете пользователям изменять или удалять содержимое в этой части документа. Для защиты частей документа с помощью элементов управления содержимым можно использовать несколько способов.
Если область, которую необходимо защитить, находится внутри элемента управления содержимым, то чтобы запретить изменение или удаление элемента управления, можно использовать свойства элемента управления содержимым.
- Свойство LockContents запрещает пользователям изменять содержимое.
- Свойство LockContentControl запрещает пользователям удалять элемент управления. Если область, которую необходимо защитить, находится не внутри элемента управления содержимым или вы хотите защитить область, которая содержит элементы управления содержимым и другие типы содержимого, то область можно целиком поместить в элемент GroupContentControl. В отличие от других элементов управления содержимым, GroupContentControl не отображает пользователям пользовательский интерфейс. Он предназначен только для того, чтобы определить область, которую пользователи не могут изменять.
При создании элемента GroupContentControl, который содержит внедренные элементы управления содержимым, такие элементы автоматически не защищаются. Необходимо использовать свойство LockContents каждого внедренного элемента управления, чтобы запретить пользователям изменять их содержимое.
Дополнительные сведения об использовании элементов управления содержимым для защиты частей документов см. в статье "Практическое руководство. Защита частей документов с помощью элементов управления содержимым".
Привязка данных к элементам управления содержимым
Для отображения данных в документах элемент управления содержимым можно привязать к источнику данных. При обновлении источника данных элемент управления содержимым будет показывать внесенные изменения. Изменения также можно сохранить обратно в источник данных.
Элементы управления содержимым предоставляют следующие возможности по привязке данных.
- Для привязки элементов управления содержимым к полям базы данных или управляемым объектам можно использовать ту же модель привязки данных, что и в Windows Forms.
- Элементы управления содержимым можно привязать к элементам XML (также именованные пользовательскими XML-частями), внедренными в документ. Обзор элементов управления узлом привязки в решениях Office для данных см. в статье "Привязка данных к элементам управления" в решениях Office.
Использование модели привязки данных Windows Forms
Большинство элементов управления содержимым поддерживают простую модель привязки данных, используемую Windows Forms. Простая привязка данных означает, что элемент управления привязывается к одному элементу данных, например к значению в столбце таблицы данных. Дополнительные сведения см. в разделе "Привязка данных" и Windows Forms.
В проектах уровня документа можно привязать данные к элементам управления содержимым с помощью окна "Источники данных" в Visual Studio. Дополнительные сведения о добавлении элементов управления с привязкой к данным в документы см. в статье "Практическое руководство. Заполнение документов данными из базы данных и практическое руководство. Заполнение документов данными из объектов".
В следующей таблице перечислены элементы управления содержимым, которые можно привязать к каждому типу данных в окне "Источники данных".
В проектах на уровне документа и проектах надстроек VSTO для привязки элемента управления содержимым к источнику данных программным образом можно использовать метод Add свойства DataBindings элемента управления. При этом передайте строку Textв параметр Add propertyName метода. Свойство Text — это свойство привязки данных по умолчанию элементов управления содержимым.
Элементы управления содержимым также поддерживают двухстороннюю привязку данных, при которой изменения в элементе управления переносятся в источник данных. Дополнительные сведения см. в статье "Практическое руководство. Обновление источника данных с данными из элемента управления узлом".
Элементы управления содержимым не поддерживают сложную привязку данных. Если для привязки DropDownListContentControl или ComboBoxContentControl к источнику данных применяется модель данных Windows Forms, при щелчке элемента управления пользователи увидят только одно значение. Если эти элементы управления необходимо привязать к набору значений данных, которые пользователь может выбирать, то эти элементы можно привязать к элементам в пользовательской XML-части.
Привязка элементов управления содержимым к пользовательским XML-частям
Элементы управления содержимым можно привязать к элементам в пользовательских XML-частях, которые внедряются в документ. Дополнительные сведения о пользовательских XML-частях см. в обзоре пользовательских XML-частей.
Чтобы привязать элемент управления содержимым к элементу пользовательской XML-части, используйте свойство XMLMapping элемента управления. В следующем примере кода показано, как привязать PlainTextContentControl к элементу Price в узле Product в пользовательской XML-части, которая уже была добавлена в документ.
plainTextContentControl1.XMLMapping.SetMapping("/Product/Price", String.Empty, null);
plainTextContentControl1.XMLMapping.SetMapping("/Product/Price")
Пошаговое руководство по привязке элементов управления содержимым к пользовательским XML-частям подробно см . в пошаговом руководстве. Привязка элементов управления содержимым к пользовательским XML-частям.
При привязке элемента управления содержимым к пользовательской XML-части автоматически включается двусторонняя привязка данных. Когда пользователь редактирует текст в элементе управления, соответствующие XML-элементы обновляются автоматически. Аналогичным образом, если значения элементов в пользовательских XML-частях изменяются, элементы управления содержимым, привязанные к этим XML-элементам, будут отображать новые данные.
К пользовательским XML-частям можно привязать элементы управления содержимым следующего типа.
- ComboBoxContentControl
- DatePickerContentControl
- DropDownListContentControl
- PictureContentControl
- PlainTextContentControl
События привязки данных для элементов управления содержимым
Все элементы управления содержимым предоставляют набор событий, которые можно обрабатывать для выполнения задач, связанных с данными, например для проверки соответствия текста в элементе управления заданным критериям перед обновлением источника данных. В следующей таблице перечислены события элементов управления, которые относятся к привязке данных.
Задача | Мероприятие |
---|---|
Выполнение кода непосредственно перед тем, как Word автоматически обновит текст в элементе управления содержимым, привязанном к пользовательской XML-части. | ContentUpdating |
Выполнение кода непосредственно перед тем, как Word автоматически обновит данные в пользовательской XML-части, которая привязана к элементу управления содержимым (то есть после изменения текста в элементе управления содержимым). | StoreUpdating |
Выполнение кода для проверки содержимого элемента управления в соответствии с пользовательскими критериями. | Validating |
Выполнение кода после успешной проверки содержимого элемента управления. | Validated |
Ограничения элементов управления содержимым
При использовании элементов управления содержимым в проектах Office следует учитывать следующие ограничения.
Различия между временем разработки и средой выполнения
Многие ограничения, которые Microsoft Office Word налагает на элементы управления содержимым во время выполнения, не применяются во время разработки. При проектировании пользовательского интерфейса решения на уровне документа в Visual Studio обязательно изменяйте элементы управления содержимым только способами, которые поддерживаются во время выполнения.
Если вы изменяете элемент управления содержимым во время разработки таким образом, чтобы элемент управления не поддерживался во время выполнения, конструктор Visual Studio не оповещает вас о неподдерживаемых изменениях. Тем не менее при отладке или запуске проекта либо при сохранении и последующем повторном открытии проекта в Word появится сообщение об ошибке и запрос на разрешение исправить документ. При восстановлении документа Word удалит из элемента управления все неподдерживаемое содержимое и форматирование.
Например, Word не запретит вам добавить таблицу в PlainTextContentControl во время разработки. Однако так как объекты PlainTextContentControl не могут содержать таблицы во время выполнения, то при открытии этого документа Word выдаст сообщение об ошибке.
Также следует отметить, что многие свойства, определяющие поведение элементов управления содержимым, не оказывают никакого влияния во время разработки. Например, если для свойства LockContents элемента управления содержимым задано значение True во время разработки, можно изменить текст в элементе управления в конструкторе Visual Studio. Это свойство не позволяет изменять элемент управления только во время выполнения.
Ограничения событий
Элементы управления содержимым не предоставляют событие, которое возникает при изменении пользователем текста или других элементов в элементе управления. Например, не существует событие, возникающее, когда пользователь выбирает другой элемент в DropDownListContentControl или ComboBoxContentControl.
Чтобы определить, когда пользователь изменяет содержимое элемента управления содержимым, элемент управления можно привязать к пользовательской XML-части, а затем обрабатывать событие StoreUpdating. Это событие возникает, когда пользователь изменяет содержимое элемента управления, привязанного к пользовательской XML-части. Пошаговое руководство по привязке элемента управления содержимым к пользовательской XML-части см . в пошаговом руководстве. Привязка элементов управления содержимым к пользовательским XML-частям.
Флажок элементы управления содержимым в проектах Word
В Word 2010 появился новый тип элемента управления содержимым, который представляет флажок. Однако среда выполнения набор средств Visual Studio для Office не предоставляет соответствующий тип CheckBoxContentControl для использования в проектах Office. Чтобы создать элемент управления содержимым проверка в проекте Word 2013 или Word 2010, используйте AddContentControl метод для создания ContentControl объекта и передайте wdContentControlCheckBox значение методу для указания элемента управления содержимым проверка поля. В следующем примере кода показано, как это сделать.
this.Paragraphs[1].Range.InsertParagraphBefore(); this.Paragraphs[1].Range.Select(); Microsoft.Office.Tools.Word.ContentControl checkBoxControl1 = this.Controls.AddContentControl("checkBoxControl1", Word.WdContentControlType.wdContentControlCheckBox); checkBoxControl1.Checked = true;
Me.Paragraphs(1).Range.InsertParagraphBefore() Me.Paragraphs(1).Range.Select() Dim checkBoxControl1 As Microsoft.Office.Tools.Word.ContentControl = Me.Controls.AddContentControl("checkBoxControl1", Word.WdContentControlType.wdContentControlCheckBox) checkBoxControl1.Checked = True
Связанный контент
- Автоматизация Word с помощью расширенных объектов
- Практическое руководство. Добавление элементов управления содержимым в документы Word
- Пошаговое руководство. Создание шаблона с помощью элементов управления содержимым
- Данные в решениях Office
- Привязка данных к элементам управления в решениях Office
- Программные ограничения элементов узла и элементов управления узлами