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


Практическое руководство. Добавление элементов управления содержимым в документы Word

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

Применение. Сведения этого раздела применяются к проектам уровня документа и уровня приложения для Word 2013 и Word 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.

В этом разделе описаны следующие задачи:

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

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

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

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

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

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

ПримечаниеПримечание

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Чтобы добавить в документ элемент управления содержимым с панели элементов, выполните указанные ниже действия.

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

  2. Откройте панель элементов, после чего откройте вкладку Элементы управления Word.

  3. Добавьте элемент управления одним из следующих методов:

    • На панели элементов дважды щелкните на элемент управления содержимым.

      или

    • Щелкните на элементе управления содержимым в панели элементов, а затем нажмите клавишу ВВОД.

      или

    • Перетащите элемент управления содержимым из Панели элементов в документ.Элемент управления содержимым добавится в место текущего выделения в документе, но не в расположение указателя мыши.

ПримечаниеПримечание

Можно добавить GroupContentControl при помощи панели элементов.Можно добавлять только GroupContentControl в Word или во время выполнения.

ПримечаниеПримечание

Visual Studio не предоставляет элемент управления "флажок" на панели элементов для Word 2013 и не формулирует 2010 проектов.Для добавления элемента управления содержимым "флажок" в документ необходимо программно создать объект ContentControl.Дополнительные сведения см. в разделе Элементы управления содержимым.

Чтобы добавить в документ Word элемент управления содержимым, выполните указанные ниже действия.

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

  2. В ленте щелкните вкладку Разработчик.

    ПримечаниеПримечание

    Если вкладка Разработчик не отображается в ленте, то ее следует сначала отобразить.Дополнительные сведения см. в разделе Практическое руководство. Отображение вкладки разработчика на ленте.

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

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

Можно программно добавить элемент управления содержимым в документ во время выполнения при помощи методов свойства Controls класса ThisDocument.Каждый метод имеет три перегрузки, что позволяет добавить элемент управления содержимым следующими способами:

  • Добавить элемент управления в место текущего выделения.

  • Добавить элемент управления в указанный диапазон.

  • Добавить элемент управления, основанный на исходном элементе управления содержимым в документе.

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

ПримечаниеПримечание

Для добавления элемента управления содержимым "флажок" в документ в проекте Word 2010 необходимо создать объект ContentControl.Дополнительные сведения см. в разделе Элементы управления содержимым.

Добавление элемента управления содержимым в место текущего выделения

  • Используйте метод ControlCollection, имеющий имя Add<класса элементов управления > (где класс элементов управления является именем класса элемента управления содержимым, который Вы хотите добавить, например AddRichTextContentControl), и имеющий единственный параметр для имени нового элемента управления.

    В следующем примере кода метод ControlCollection.AddRichTextContentControl(String) используется для добавления новых объектов RichTextContentControl в начало документа.Чтобы запустить этот код, добавьте код в класс ThisDocument в вашем проекте и вызовите метод AddRichTextControlAtSelection из обработчика событий ThisDocument_Startup.

    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
    
    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), и имеющий параметр Microsoft.Office.Interop.Word.Range.

    В следующем примере кода метод ControlCollection.AddRichTextContentControl(Range, String) используется для добавления новых объектов RichTextContentControl в начало документа.Чтобы запустить этот код, добавьте код в класс ThisDocument в вашем проекте и вызовите метод AddRichTextControlAtRange из обработчика событий ThisDocument_Startup.

    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
    
    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.

    В приведенном ниже примере кода с помощью метода ControlCollection.AddRichTextContentControl(ContentControl, String) создается новый элемент управления RichTextContentControl для каждого имеющегося в документе элемента управления текстом в формате RTF.Чтобы запустить этот код, добавьте код в класс ThisDocument в вашем проекте и вызовите метод CreateRichTextControlsFromNativeControls из обработчика событий ThisDocument_Startup.

    Private richTextControls As New System.Collections.Generic.List _
            (Of Microsoft.Office.Tools.Word.RichTextContentControl)
    
    Private Sub CreateRichTextControlsFromNativeControls()
        If Me.ContentControls.Count <= 0 Then
            Return
        End If
    
        Dim count As Integer = 0
        For Each nativeControl As Word.ContentControl In Me.ContentControls
            If nativeControl.Type = Word.WdContentControlType.wdContentControlRichText Then
                count += 1
                Dim tempControl As Microsoft.Office.Tools.Word.RichTextContentControl = _
                    Me.Controls.AddRichTextContentControl(nativeControl, _
                    "VSTORichTextContentControl" + count.ToString())
                richTextControls.Add(tempControl)
            End If
        Next nativeControl
    End Sub
    
    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);
            }
        }
    }
    

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

Элементы управления содержимым можно добавлять в любой открытый документ во время выполнения программно или с использованием надстройки уровня приложения.Для этого создайте ведущий элемент Document, основанный на открытом документе, и используйте метод свойства Controls этого ведущего элемента.Каждый метод имеет три перегрузки, что позволяет добавить элемент управления содержимым следующими способами:

  • Добавить элемент управления в место текущего выделения.

  • Добавить элемент управления в указанный диапазон.

  • Добавить элемент управления, основанный на исходном элементе управления содержимым в документе.

Динамически созданные элементы управления содержимым не сохраняются в документе при его закрытии.Однако, собственные элементы управления содержимым остаются в документе.Можно заново создать элемент управления содержимым, основанный на собственном элементе управления содержимым при следующем открытии документа.Дополнительные сведения см. в разделе Сохранение динамических элементов управления в документах Office.

Дополнительные сведения о создании ведущих элементов в проектах уровня приложения см. в разделе Расширение документов Word и книг Excel в надстройках уровня приложения во время выполнения.

ПримечаниеПримечание

Чтобы добавить элемент управления checkbox в документ в проекте слова Word 2013 или 2010, необходимо создать объект ContentControl.Дополнительные сведения см. в разделе Элементы управления содержимым.

Добавление элемента управления содержимым в место текущего выделения

  • Используйте метод ControlCollection, имеющий имя Add<класса элементов управления > (где класс элементов управления является именем класса элемента управления содержимым, который Вы хотите добавить, например AddRichTextContentControl), и имеющий единственный параметр для имени нового элемента управления.

    В следующем примере кода метод ControlCollection.AddRichTextContentControl(String) используется для добавления новых объектов RichTextContentControl в начало активного документа.Чтобы запустить этот код, добавьте код в класс ThisAddIn в вашем проекте и вызовите метод AddRichTextControlAtSelection из обработчика событий ThisAddIn_Startup.

    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
    
    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), и имеющий параметр Microsoft.Office.Interop.Word.Range.

    В следующем примере кода метод ControlCollection.AddRichTextContentControl(Range, String) используется для добавления новых объектов RichTextContentControl в начало активного документа.Чтобы запустить этот код, добавьте код в класс ThisAddIn в вашем проекте и вызовите метод AddRichTextControlAtRange из обработчика событий ThisAddIn_Startup.

    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
    
    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.

    В приведенном ниже примере кода с помощью метода ControlCollection.AddRichTextContentControl(ContentControl, String) создается новый элемент управления RichTextContentControl для каждого имеющегося в документе элемента управления текстом после открытия документа.Чтобы выполнить этот код, добавьте код в класс ThisAddIn проекта.

    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
    
    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 во время выполнения

Программные ограничения ведущих элементов и элементов управления ведущего приложения

Другие ресурсы

Программирование надстроек уровня приложения

Настройки программирования уровня документа