Поделиться через


Элементы управления содержимым

Элементы управления содержимым позволяют разрабатывать документы и шаблоны, которые имеют следующие возможности и функции.

Сведения о элементах управления содержимым

Элементы управления содержимым предоставляют пользовательский интерфейс, который оптимизирован как для данных, вводимых пользователем, так и для печати. При добавлении элемента управления содержимым в документ этот элемент управления идентифицируется границей, заголовком и временным текстом, который может содержать инструкции для пользователя. Границы и заголовок элемента управления в печатных версиях документа не отображаются.

Например, если требуется, чтобы пользователь мог ввести дату в раздел вашего документа, то в документ можно добавить элемент управления для выбора даты. Когда пользователь щелкает элемент управления, появляется стандартный пользовательский интерфейс выбора даты. Для настройки отображаемого регионального календаря и указания формата даты также можно задать свойства элемента управления. После того как пользователь выберет дату, пользовательский интерфейс элемента управления скрывается и при печати появляется только дата.

Элементы управления содержимым также позволяют выполнять следующие действия.

  • Запрет пользователям изменять или удалять части документа. Это удобно, если в документе или шаблоне есть сведения, доступные пользователям для чтения, но не для изменения, или если пользователи должны иметь возможность редактировать элементы управления содержимым, но не удалять их.

  • Привязка документа или шаблона к данным. Элементы управления содержимым можно привязать к полям базы данных, управляемым объектам в платформа .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. Дополнительные сведения о добавлении элементов управления с привязкой к данным в документы см. в статье "Практическое руководство. Заполнение документов данными из базы данных и практическое руководство. Заполнение документов данными из объектов".

В следующей таблице перечислены элементы управления содержимым, которые можно привязать к каждому типу данных в окне "Источники данных".

Тип данных Элемент управления содержимым по умолчанию Другие элементы управления содержимым, которые можно привязать к этому типу данных
Boolean

Byte

Char

Double

Enum

Guid

Int16

Int32

Int64

SByte

Single

String

TimeSpan

UInt16

UInt32

UInt64
PlainTextContentControl BuildingBlockGalleryContentControl

ComboBoxContentControl

DatePickerContentControl

RichTextContentControl
DateTime DatePickerContentControl BuildingBlockGalleryContentControl

ComboBoxContentControl

PlainTextContentControl

RichTextContentControl
Image

Byte массив
PictureContentControl нет

В проектах на уровне документа и проектах надстроек 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);

Пошаговое руководство по привязке элементов управления содержимым к пользовательским XML-частям подробно см . в пошаговом руководстве. Привязка элементов управления содержимым к пользовательским XML-частям.

При привязке элемента управления содержимым к пользовательской XML-части автоматически включается двусторонняя привязка данных. Когда пользователь редактирует текст в элементе управления, соответствующие XML-элементы обновляются автоматически. Аналогичным образом, если значения элементов в пользовательских XML-частях изменяются, элементы управления содержимым, привязанные к этим XML-элементам, будут отображать новые данные.

К пользовательским XML-частям можно привязать элементы управления содержимым следующего типа.

События привязки данных для элементов управления содержимым

Все элементы управления содержимым предоставляют набор событий, которые можно обрабатывать для выполнения задач, связанных с данными, например для проверки соответствия текста в элементе управления заданным критериям перед обновлением источника данных. В следующей таблице перечислены события элементов управления, которые относятся к привязке данных.

Задача Мероприятие
Выполнение кода непосредственно перед тем, как 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;