Добавление элементов управления содержимым в документы 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() { this.Paragraphs[1].Range.InsertParagraphBefore(); this.Paragraphs[1].Range.Select(); richTextControl1 = this.Controls.AddRichTextContentControl("richTextControl1"); richTextControl1.PlaceholderText = "Enter your first name"; }
Добавление элемента управления в указанный диапазон
ControlCollection Используйте метод, имеющий
Add
<класс> управления именем (где класс элемента управления — это имя класса элемента управления содержимым, который требуется добавить, напримерAddRichTextContentControl), и имеющий Range параметр.Следующий пример кода использует метод AddRichTextContentControl , чтобы добавить новый RichTextContentControl в начало документа. Для выполнения этого кода добавьте код в класс
ThisDocument
в проекте и вызовите методAddRichTextControlAtRange
обработчика событийThisDocument_Startup
.private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2; private void AddRichTextControlAtRange() { this.Paragraphs[1].Range.InsertParagraphBefore(); richTextControl2 = this.Controls.AddRichTextContentControl(this.Paragraphs[1].Range, "richTextControl2"); richTextControl2.PlaceholderText = "Enter your first name"; }
Добавление элемента управления содержимым, основанного на управляемом элементе управления содержимым
ControlCollection Используйте метод, имеющий
Add
<класс> управления именем (где класс элемента управления — это имя класса элемента управления содержимым, который требуется добавить, напримерAddRichTextContentControl), и имеющийMicrosoft.Office.Interop.Word.ContentControl
параметр.В следующем примере кода метод AddRichTextContentControl используется для создания нового объекта RichTextContentControl для каждого управляемого элемента управления форматированием текста, который есть в документе. Для выполнения этого кода добавьте код в класс
ThisDocument
в проекте и вызовите методCreateRichTextControlsFromNativeControls
обработчика событийThisDocument_Startup
.private System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls; private void CreateRichTextControlsFromNativeControls() { if (this.ContentControls.Count <= 0) return; richTextControls = new System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl>(); 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); } } }
Добавление элементов управления содержимым во время выполнения в проект надстройки 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() { Word.Document currentDocument = this.Application.ActiveDocument; currentDocument.Paragraphs[1].Range.InsertParagraphBefore(); currentDocument.Paragraphs[1].Range.Select(); Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument); richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1"); richTextControl1.PlaceholderText = "Enter your first name"; }
Добавление элемента управления в указанный диапазон
ControlCollection Используйте метод, имеющий
Add
<класс> управления именем (где класс элемента управления — это имя класса элемента управления содержимым, который требуется добавить, напримерAddRichTextContentControl), и имеющий Range параметр.Следующий пример кода использует метод AddRichTextContentControl , чтобы добавить новый RichTextContentControl в начало активного документа. Для выполнения этого кода добавьте код в класс
ThisAddIn
в проекте и вызовите методAddRichTextControlAtRange
обработчика событийThisAddIn_Startup
.private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2; private void AddRichTextControlAtRange() { Word.Document currentDocument = this.Application.ActiveDocument; currentDocument.Paragraphs[1].Range.InsertParagraphBefore(); Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument); richTextControl2 = extendedDocument.Controls.AddRichTextContentControl( currentDocument.Paragraphs[1].Range, "richTextControl2"); richTextControl2.PlaceholderText = "Enter your first name"; }
Добавление элемента управления содержимым, основанного на управляемом элементе управления содержимым
ControlCollection Используйте метод, имеющий
Add
<класс> управления именем (где класс элемента управления — это имя класса элемента управления содержимым, который требуется добавить, напримерAddRichTextContentControl), и имеющийMicrosoft.Office.Interop.Word.ContentControl
параметр.В следующем примере кода метод AddRichTextContentControl используется для создания нового объекта RichTextContentControl для каждого управляемого элемента управления форматированием текста в документе после его открытия. Для выполнения этого кода добавьте код в класс
ThisAddIn
в проекте.private System.Collections.Generic.List <Microsoft.Office.Tools.Word.RichTextContentControl> 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 <Microsoft.Office.Tools.Word.RichTextContentControl>(); 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); } } } }
Для C# необходимо присоединить обработчик
Application_DocumentOpen
к событию DocumentOpen .this.Application.DocumentOpen += new Word.ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);
Связанный контент
- Автоматизация Word с помощью расширенных объектов
- Общие сведения о элементах размещения и элементах управления узлами
- Добавление элементов управления в документы Office во время выполнения
- Программные ограничения элементов узла и элементов управления узлами
- Программные надстройки VSTO
- Настройки уровня документа программы