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

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

Область применения. Сведения в этом разделе относятся к проектам уровня документа и проектам надстроек VSTO для Word. Дополнительные сведения см. в разделе "Функции", доступные по Приложение Office ликации и типу проекта.

В этом разделе описываются следующие задачи.

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

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

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

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

  • Перетащите элемент управления в документ из окна Источники данных . Это полезно, если нужно одновременно привязать элемент управления к данным при его создании. Дополнительные сведения см. в разделе "Практическое руководство. Заполнение документов данными из объектов и практическое руководство. Заполнение документов данными из базы данных".

    Примечание.

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

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

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

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

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

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

      or

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

      or

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

Примечание.

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

Примечание.

Visual Studio не предоставляет элемент управления содержимым «Флажок» в панели элементов. Чтобы добавить элемент управления содержимым «Флажок» в документ, необходимо создать ContentControl программно. Дополнительные сведения см. в разделе "Элементы управления содержимым".

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

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

  2. На ленте перейдите на вкладку Разработчик .

    Примечание.

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

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

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

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

  • добавление элемента управления в текущее выделение;

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

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

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

Примечание.

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

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

  1. 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";
    }
    

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

  1. 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";
    }
    

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

  1. 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 . Дополнительные сведения см. в разделе "Элементы управления содержимым".

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

  1. 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";
    }
    

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

  1. 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";
    }
    

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

  1. 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);