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


Практическое руководство. Защита частей документов с помощью элементов управления содержимым

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

Применение

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

Тип проекта

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

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

Версия Microsoft Office

  • Word 2007

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

При защите части документа пользователям запрещается изменять или удалять содержимое в этой части документа. Существует несколько способов защиты частей документа Microsoft Office Word 2007 с помощью элементов управления содержимым:

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

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

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

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

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

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

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

  2. В окне Свойства установите одно или несколько из следующих свойств:

    • чтобы запретить пользователям изменять элемент управления, задайте для свойства LockContents значение True;

    • чтобы запретить пользователям удалять элемент управления, задайте для свойства LockContentControl значение True.

  3. Нажмите кнопку ОК.

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

  • Задайте для свойства LockContents элемента управления содержимым значение true, чтобы запретить пользователям редактировать элемент управления, а для свойства LockContentControl значение true, чтобы запретить пользователям удалять элемент управления.

    В следующем примере кода демонстрируется использование свойств LockContents и LockContentControl двух разных объектов RichTextContentControl в проекте уровня документа. Чтобы запустить этот код, добавьте код в класс ThisDocument в вашем проекте и вызовите метод AddProtectedContentControls из обработчика событий ThisDocument_Startup.

    Dim deletableControl As Microsoft.Office.Tools.Word.RichTextContentControl
    Dim editableControl As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddProtectedContentControls()
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        Dim range1 As Word.Range = Me.Paragraphs(1).Range
    
        deletableControl = Me.Controls.AddRichTextContentControl(range1, _
            "deletableControl")
        deletableControl.PlaceholderText = "You can delete this control, " & _
            "but you cannot edit it"
        deletableControl.LockContents = True
    
        range1.InsertParagraphAfter()
        Dim range2 As Word.Range = Me.Paragraphs(2).Range
    
        editableControl = Me.Controls.AddRichTextContentControl(range2, _
            "editableControl")
        editableControl.PlaceholderText = "You can edit this control, " & _
            "but you cannot delete it"
        editableControl.LockContentControl = True
    End Sub
    
    private Microsoft.Office.Tools.Word.RichTextContentControl deletableControl;
    private Microsoft.Office.Tools.Word.RichTextContentControl editableControl;
    
    private void AddProtectedContentControls()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
        Word.Range range1 = this.Paragraphs[1].Range;
    
        deletableControl = this.Controls.AddRichTextContentControl(range1,
            "deletableControl");
        deletableControl.PlaceholderText = "You can delete this control, " +
            "but you cannot edit it";
        deletableControl.LockContents = true;
    
        range1.InsertParagraphAfter();
        Word.Range range2 = this.Paragraphs[2].Range;
    
        editableControl = this.Controls.AddRichTextContentControl(range2,
            "editableControl");
        editableControl.PlaceholderText = "You can edit this control, " +
            "but you cannot delete it";
        editableControl.LockContentControl = true;
    }
    

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

  • Задайте для свойства LockContents элемента управления содержимым значение true, чтобы запретить пользователям редактировать элемент управления, а для свойства LockContentControl значение true, чтобы запретить пользователям удалять элемент управления.

    В следующем примере кода демонстрируется использование свойств LockContents и LockContentControl двух разных объектов RichTextContentControl в проекте уровня приложения. Чтобы запустить этот код, добавьте код в класс ThisAddIn в вашем проекте и вызовите метод AddProtectedContentControls из обработчика событий ThisAddIn_Startup.

    Dim deletableControl As Microsoft.Office.Tools.Word.RichTextContentControl
    Dim editableControl As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddProtectedContentControls()
        Dim vstoDocument As Microsoft.Office.Tools.Word.Document = _
            Me.Application.ActiveDocument.GetVstoObject()
        vstoDocument.Paragraphs(1).Range.InsertParagraphBefore()
        Dim range1 As Word.Range = vstoDocument.Paragraphs(1).Range
    
        deletableControl = vstoDocument.Controls.AddRichTextContentControl(range1, _
            "deletableControl")
        deletableControl.PlaceholderText = "You can delete this control, " & _
            "but you cannot edit it"
        deletableControl.LockContents = True
    
        range1.InsertParagraphAfter()
        Dim range2 As Word.Range = vstoDocument.Paragraphs(2).Range
    
        editableControl = vstoDocument.Controls.AddRichTextContentControl(range2, _
            "editableControl")
        editableControl.PlaceholderText = "You can edit this control, " & _
            "but you cannot delete it"
        editableControl.LockContentControl = True
    End Sub
    
    private Microsoft.Office.Tools.Word.RichTextContentControl deletableControl;
    private Microsoft.Office.Tools.Word.RichTextContentControl editableControl;
    
    private void AddProtectedContentControls()
    {
        Microsoft.Office.Tools.Word.Document vstoDocument = 
            this.Application.ActiveDocument.GetVstoObject();
        vstoDocument.Paragraphs[1].Range.InsertParagraphBefore();
        Word.Range range1 = vstoDocument.Paragraphs[1].Range;
    
        deletableControl = vstoDocument.Controls.AddRichTextContentControl(range1,
            "deletableControl");
        deletableControl.PlaceholderText = "You can delete this control, " +
            "but you cannot edit it";
        deletableControl.LockContents = true;
    
        range1.InsertParagraphAfter();
        Word.Range range2 = vstoDocument.Paragraphs[2].Range;
    
        editableControl = vstoDocument.Controls.AddRichTextContentControl(range2,
            "editableControl");
        editableControl.PlaceholderText = "You can edit this control, " +
            "but you cannot delete it.";
        editableControl.LockContentControl = true;
    }
    

Защита части документа, не входящей в элемент управления содержимым

Можно запретить пользователям изменять часть документа, поместив эту часть в элемент управления GroupContentControl. Это рекомендуется делать в следующих случаях:

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

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

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

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

Защита области документа на этапе разработки

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

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

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

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

  3. В группе Элементы управления щелкните разворачивающуюся кнопку Группа и выберите пункт Группа.

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

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

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

    В приведенном ниже примере кода в первый абзац документа добавляется текст, после чего выделяется первый абзац и создается экземпляр GroupContentControl. Чтобы запустить этот код, добавьте код в класс ThisDocument в вашем проекте и вызовите метод ProtectFirstParagraph из обработчика событий ThisDocument_Startup.

    Dim groupControl1 As Microsoft.Office.Tools.Word.GroupContentControl
    
    Private Sub ProtectFirstParagraph()
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        Dim range1 As Word.Range = Me.Paragraphs(1).Range
        range1.Text = "You cannot edit or change the formatting of text " & _
                "in this paragraph, because this paragraph is in a GroupContentControl."
        range1.Select()
    
        groupControl1 = Me.Controls.AddGroupContentControl("groupControl1")
    End Sub
    
    private Microsoft.Office.Tools.Word.GroupContentControl groupControl1;
    
    private void ProtectFirstParagraph()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
        Word.Range range1 = this.Paragraphs[1].Range;
    
        range1.Text = "You cannot edit or change the formatting of text " +
            "in this sentence, because this sentence is in a GroupContentControl.";
        range1.Select();
        groupControl1 = this.Controls.AddGroupContentControl("groupControl1");
    }
    

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

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

    В приведенном ниже примере кода в первый абзац активного документа добавляется текст, после чего выделяется первый абзац и создается экземпляр GroupContentControl. Чтобы запустить этот код, добавьте код в класс ThisAddIn в вашем проекте и вызовите метод ProtectFirstParagraph из обработчика событий ThisAddIn_Startup.

    Dim groupControl1 As Microsoft.Office.Tools.Word.GroupContentControl
    
    Private Sub ProtectFirstParagraph()
        Dim vstoDocument As Microsoft.Office.Tools.Word.Document = _
            Me.Application.ActiveDocument.GetVstoObject()
        vstoDocument.Paragraphs(1).Range.InsertParagraphBefore()
    
        Dim range1 As Word.Range = vstoDocument.Paragraphs(1).Range
        range1.Text = "You cannot edit or change the formatting of text " & _
                "in this paragraph, because this paragraph is in a GroupContentControl."
        range1.Select()
    
        groupControl1 = vstoDocument.Controls.AddGroupContentControl("groupControl1")
    End Sub
    
    private Microsoft.Office.Tools.Word.GroupContentControl groupControl1;
    
    private void ProtectFirstParagraph()
    {
        Microsoft.Office.Tools.Word.Document vstoDocument =
            this.Application.ActiveDocument.GetVstoObject();
        vstoDocument.Paragraphs[1].Range.InsertParagraphBefore();
    
        Word.Range range1 = vstoDocument.Paragraphs[1].Range;
        range1.Text = "You cannot edit or change the formatting of text " +
            "in this sentence, because this sentence is in a GroupContentControl.";
        range1.Select();
    
        groupControl1 = vstoDocument.Controls.AddGroupContentControl("groupControl1");
    }
    

См. также

Задачи

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

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

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

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

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

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

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

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

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

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

Дата

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

Причина

Июль 2008

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

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