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


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

Обновлен: Июль 2008

Применение

Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office.

Тип проекта

  • Проекты уровня документа

  • Проекты уровня приложения

Версия Microsoft Office

  • Word 2007

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

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

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

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

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

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

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

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

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

Bb386200.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

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

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

      –или–

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

      –или–

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

Bb386200.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

    Bb386200.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

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

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

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

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

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

  • Используйте метод 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);
            }
        }
    }
    

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

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

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

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

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

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

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

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

  • Используйте метод 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 = currentDocument.GetVstoObject()
        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 = currentDocument.GetVstoObject();
        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 = currentDocument.GetVstoObject()
        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 = currentDocument.GetVstoObject();
        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 = Doc.GetVstoObject()
            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 = Doc.GetVstoObject();
            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);
    

См. также

Основные понятия

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

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

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

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

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

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

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

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

Журнал изменений

Дата

Журнал

Причина

Июль 2008

Добавлена процедура для надстроек уровня приложения.

Изменение функции SP1.