Gewusst wie: Schützen von Teilen von Dokumenten mithilfe von Inhaltssteuerelementen

Aktualisiert: Juli 2008

Betrifft

Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office.

Projekttyp

  • Projekte auf Dokumentebene

  • Projekte auf Anwendungsebene

Microsoft Office-Version

  • Word 2007

Weitere Informationen finden Sie unter Verfügbare Features nach Anwendung und Projekttyp.

Wenn Sie einen Teil eines Dokuments schützen, können Benutzer in diesem Teil des Dokuments keine Änderungen am Inhalt vornehmen oder den Inhalt löschen. Es gibt mehrere Methoden, wie Sie Teile eines Microsoft Office Word 2007-Dokuments mithilfe von Inhaltssteuerelementen schützen können.

  • Sie können ein Inhaltssteuerelement schützen.

  • Sie können einen Teil eines Dokuments schützen, der sich nicht in einem Inhaltssteuerelement befindet.

Schützen eines Inhaltssteuerelements

Sie können verhindern, dass Benutzer ein Inhaltssteuerelement bearbeiten oder löschen, indem Sie zur Entwurfszeit oder zur Laufzeit Eigenschaften des Steuerelements in einem Projekt auf Dokumentebene festlegen.

Ab Visual Studio 2008 Service Pack 1 (SP1) können Sie einem Dokument zur Laufzeit hinzugefügte Inhaltssteuerelemente mit einem Projekt auf Anwendungsebene schützen. Weitere Informationen hierzu finden Sie unter Gewusst wie: Hinzufügen von Inhaltssteuerelementen zu Word-Dokumenten.

So schützen Sie ein Inhaltssteuerelement zur Entwurfszeit

  1. Wählen Sie in dem Dokument, das im Visual Studio-Designer gehostet wird, das zu schützende Inhaltssteuerelement aus.

  2. Legen Sie im Eigenschaftenfenster eine oder beide der folgenden Eigenschaften fest:

    • Legen Sie LockContents auf True fest, um zu verhindern, dass Benutzer das Steuerelement bearbeiten.

    • Legen Sie LockContentControl auf True fest, um zu verhindern, dass Benutzer das Steuerelement löschen.

  3. Klicken Sie auf OK.

So schützen Sie ein Inhaltssteuerelement zur Laufzeit in einem Projekt auf Dokumentebene

  • Legen Sie die LockContents-Eigenschaft des Inhaltssteuerelements auf true fest, damit Benutzer das Steuerelement nicht bearbeiten können, und legen Sie die LockContentControl-Eigenschaft auf true fest, damit Benutzer das Steuerelement nicht löschen können.

    Im folgenden Beispiel wird die Verwendung der LockContents-Eigenschaft und der LockContentControl-Eigenschaft von zwei verschiedenen RichTextContentControl-Objekten in einem Projekt auf Dokumentebene veranschaulicht. Zum Ausführen dieses Codes fügen Sie den Code zur ThisDocument-Klasse im Projekt hinzu, und rufen Sie im ThisDocument_Startup-Ereignishandler die AddProtectedContentControls-Methode auf.

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

So schützen Sie ein Inhaltssteuerelement zur Laufzeit in einem Projekt auf Anwendungsebene

  • Legen Sie die LockContents-Eigenschaft des Inhaltssteuerelements auf true fest, damit Benutzer das Steuerelement nicht bearbeiten können, und legen Sie die LockContentControl-Eigenschaft auf true fest, damit Benutzer das Steuerelement nicht löschen können.

    Im folgenden Beispiel wird die Verwendung der LockContents-Eigenschaft und der LockContentControl-Eigenschaft von zwei verschiedenen RichTextContentControl-Objekten in einem Projekt auf Anwendungsebene veranschaulicht. Zum Ausführen dieses Codes fügen Sie den Code zur ThisAddIn-Klasse im Projekt hinzu und rufen im ThisAddIn_Startup-Ereignishandler die AddProtectedContentControls-Methode auf.

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

Schützen eines Teils eines Dokuments, der sich nicht in einem Inhaltssteuerelement befindet

Sie können einen Bereich eines Dokuments in ein GroupContentControl setzen, um zu verhindern, dass Benutzer diesen Bereich des Dokuments bearbeiten. Dies ist in den folgenden Szenarien nützlich:

  • Sie möchten einen Bereich schützen, der keine Inhaltssteuerelemente enthält.

  • Sie möchten einen Bereich schützen, der bereits Inhaltssteuerelemente enthält, aber der Text oder die anderen Elemente, die Sie schützen möchten, befinden sich nicht in den Inhaltssteuerelementen.

Hinweis:

Wenn Sie ein GroupContentControl mit eingebetteten Inhaltssteuerelementen erstellen, sind die eingebetteten Inhaltssteuerelemente nicht automatisch geschützt. Um zu verhindern, dass Benutzer ein eingebettetes Inhaltssteuerelement bearbeiten, verwenden Sie die LockContents-Eigenschaft des Steuerelements.

So schützen Sie einen Bereich eines Dokuments zur Entwurfszeit

  1. Wählen Sie im Dokument, das im Visual Studio-Designer gehostet wird, den zu schützenden Bereich aus.

  2. Klicken Sie in der Multifunktionsleiste auf die Registerkarte Entwickler.

    Hinweis:

    Wenn die Registerkarte Entwickler nicht sichtbar ist, müssen Sie diese zuerst anzeigen. Weitere Informationen finden Sie unter Gewusst wie: Anzeigen der Registerkarte "Entwickler" auf der Multifunktionsleiste.

  3. Klicken Sie in der Gruppe Steuerelemente auf die Dropdown-Schaltfläche Gruppe und dann auf Gruppe.

    Ein GroupContentControl, das den geschützten Bereich enthält, wird automatisch in der ThisDocument-Klasse im Projekt generiert. Ein Rahmen, der das Gruppen-Steuerelement darstellt, ist zur Entwurfszeit sichtbar, während der Laufzeit ist jedoch kein Rahmen sichtbar.

So schützen Sie einen Bereich eines Dokuments zur Laufzeit in einem Projekt auf Dokumentebene

  • Wählen Sie den zu schützenden Bereich programmgesteuert aus, und rufen Sie dann die AddGroupContentControl-Methode auf, um ein GroupContentControl zu erstellen.

    Im folgenden Codebeispiel wird im ersten Absatz des Dokuments Text hinzugefügt, der erste Absatz ausgewählt und anschließend ein GroupContentControl instanziiert. Zum Ausführen dieses Codes fügen Sie den Code zur ThisDocument-Klasse im Projekt hinzu, und rufen Sie im ThisDocument_Startup-Ereignishandler die ProtectFirstParagraph-Methode auf.

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

So schützen Sie einen Bereich eines Dokuments zur Laufzeit in einem Projekt auf Anwendungsebene

  • Wählen Sie den zu schützenden Bereich programmgesteuert aus, und rufen Sie dann die AddGroupContentControl-Methode auf, um ein GroupContentControl zu erstellen.

    Im folgenden Codebeispiel wird im ersten Absatz des aktiven Dokuments Text hinzugefügt, der erste Absatz ausgewählt und anschließend ein GroupContentControl instanziiert. Zum Ausführen dieses Codes fügen Sie den Code zur ThisAddIn-Klasse im Projekt hinzu, und rufen Sie im ThisAddIn_Startup-Ereignishandler die ProtectFirstParagraph-Methode auf.

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

Siehe auch

Aufgaben

Gewusst wie: Hinzufügen von Inhaltssteuerelementen zu Word-Dokumenten

Konzepte

Inhaltssteuerelemente

Übersicht über Hostelemente und Hoststeuerelemente

Programmgesteuerte Einschränkungen von Hostelementen und Hoststeuerelementen

Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit

Hilfsmethoden für Hoststeuerelemente

Weitere Ressourcen

Word-Hoststeuerelemente

Änderungsprotokoll

Date

Versionsgeschichte

Grund

Juli 2008

Prozeduren für Add-Ins auf Anwendungsebene hinzugefügt.

SP1-Featureänderung.