Udostępnij za pośrednictwem


Ochrona części dokumentów przy użyciu kontrolek zawartości

W przypadku ochrony części dokumentu uniemożliwisz użytkownikom zmianę lub usunięcie zawartości w tej części dokumentu. Istnieje kilka sposobów ochrony części dokumentu programu Microsoft Office Word przy użyciu kontrolek zawartości:

  • Możesz chronić kontrolkę zawartości.

  • Możesz chronić część dokumentu, która nie znajduje się w kontrolce zawartości.

    Dotyczy: informacje w tym temacie dotyczą projektów na poziomie dokumentu i projektów dodatków VSTO dla programu Word. Aby uzyskać więcej informacji, zobacz Funkcje dostępne przez aplikacja pakietu Office lication i typ projektu.

Ochrona kontrolki zawartości

Możesz uniemożliwić użytkownikom edytowanie lub usuwanie kontrolki zawartości, ustawiając właściwości kontrolki w projekcie na poziomie dokumentu w czasie projektowania lub w czasie wykonywania.

Możesz również chronić kontrolki zawartości dodawane do dokumentu w czasie wykonywania przy użyciu projektu dodatku VSTO. Aby uzyskać więcej informacji, zobacz How to: Add content controls to Word documents (Instrukcje: dodawanie kontrolek zawartości do dokumentów programu Word).

Aby chronić kontrolkę zawartości w czasie projektowania

  1. W dokumencie hostowanym w projektancie programu Visual Studio wybierz kontrolkę zawartości, którą chcesz chronić.

  2. W oknie Właściwości ustaw jedną lub obie następujące właściwości:

    • Aby uniemożliwić użytkownikom edytowanie kontrolki, ustaw wartość LockContents na true.

    • Aby uniemożliwić użytkownikom usuwanie kontrolki, ustaw wartość LockContentControl na wartość True.

  3. Kliknij przycisk OK.

Aby chronić kontrolkę zawartości w czasie wykonywania

  1. LockContents Ustaw właściwość kontrolki zawartości na wartość true, aby uniemożliwić użytkownikom edytowanie kontrolki, a właściwość ma LockContentControlwartość true, aby uniemożliwić użytkownikom usunięcie kontrolki.

    Poniższy przykład kodu przedstawia użycie LockContents właściwości i LockContentControl dwóch różnych RichTextContentControl obiektów w projekcie na poziomie dokumentu. Aby uruchomić ten kod, dodaj kod do ThisDocument klasy w projekcie i wywołaj metodę AddProtectedContentControls z ThisDocument_Startup procedury obsługi zdarzeń.

    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;
    }
    

    W poniższym przykładzie kodu pokazano użycie LockContents właściwości i LockContentControl dwóch różnych RichTextContentControl obiektów w projekcie dodatku VSTO. Aby uruchomić ten kod, dodaj kod do ThisAddIn klasy w projekcie i wywołaj metodę AddProtectedContentControls z ThisAddIn_Startup procedury obsługi zdarzeń.

    private Microsoft.Office.Tools.Word.RichTextContentControl deletableControl;
    private Microsoft.Office.Tools.Word.RichTextContentControl editableControl;
    
    private void AddProtectedContentControls()
    {
        Microsoft.Office.Tools.Word.Document vstoDocument = 
            Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
    
    
        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;
    }
    

Ochrona części dokumentu, która nie znajduje się w kontrolce zawartości

Możesz uniemożliwić użytkownikom zmianę obszaru dokumentu, umieszczając obszar w GroupContentControlobiekcie . Jest to przydatne w następujących scenariuszach:

  • Chcesz chronić obszar, który nie zawiera kontrolek zawartości.

  • Chcesz chronić obszar, który zawiera już kontrolki zawartości, ale tekst lub inne elementy, które chcesz chronić, nie znajdują się w kontrolkach zawartości.

Uwaga

Jeśli tworzysz kontrolki zawartości osadzonej GroupContentControl , osadzone kontrolki zawartości nie są automatycznie chronione. Aby uniemożliwić użytkownikom edytowanie osadzonej kontrolki zawartości, użyj właściwości LockContents kontrolki.

Aby chronić obszar dokumentu w czasie projektowania

  1. W dokumencie hostowanym w projektancie programu Visual Studio wybierz obszar, który chcesz chronić.

  2. Na wstążce kliknij kartę Deweloper .

    Uwaga

    Jeśli karta Deweloper nie jest widoczna, musisz go najpierw wyświetlić. Aby uzyskać więcej informacji, zobacz Instrukcje: pokazywanie karty dewelopera na wstążce.

  3. W grupie Kontrolki kliknij przycisk listy rozwijanej Grupa, a następnie kliknij pozycję Grupa.

    Element GroupContentControl zawierający chroniony region jest generowany automatycznie w ThisDocument klasie w projekcie. Obramowanie reprezentujące kontrolkę grupy jest widoczne w czasie projektowania, ale w czasie wykonywania nie ma widocznego obramowania.

Aby chronić obszar dokumentu w czasie wykonywania

  1. Programowo wybierz obszar, który chcesz chronić, a następnie wywołaj AddGroupContentControl metodę GroupContentControl, aby utworzyć obiekt .

    Poniższy przykładowy kod projektu na poziomie dokumentu dodaje tekst do pierwszego akapitu w dokumencie, wybiera pierwszy akapit, a następnie tworzy wystąpienie elementu GroupContentControl. Aby uruchomić ten kod, dodaj kod do ThisDocument klasy w projekcie i wywołaj metodę ProtectFirstParagraph z ThisDocument_Startup procedury obsługi zdarzeń.

    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");
    }
    

    Poniższy przykładowy kod projektu dodatku VSTO dodaje tekst do pierwszego akapitu w aktywnym dokumencie, wybiera pierwszy akapit, a następnie tworzy wystąpienie elementu GroupContentControl. Aby uruchomić ten kod, dodaj kod do ThisAddIn klasy w projekcie i wywołaj metodę ProtectFirstParagraph z ThisAddIn_Startup procedury obsługi zdarzeń.

           private Microsoft.Office.Tools.Word.GroupContentControl groupControl1;
    
           private void ProtectFirstParagraph()
           {
               Microsoft.Office.Tools.Word.Document vstoDocument =
                   Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
    
    
               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");
           }