다음을 통해 공유


콘텐츠 컨트롤을 사용하여 문서 부분 보호

문서의 일부를 보호하는 경우 사용자가 문서의 해당 부분에서 내용을 변경하거나 삭제할 수 없습니다. 콘텐츠 컨트롤을 사용하여 Microsoft Office Word 문서 부분을 보호할 수 있는 여러 가지 방법이 있습니다.

콘텐츠 컨트롤 보호

디자인 타임 또는 런타임에 문서 수준 프로젝트에서 컨트롤의 속성을 설정하여 사용자가 콘텐츠 컨트롤을 편집하거나 삭제하지 못하도록 할 수 있습니다.

VSTO 추가 기능 프로젝트를 사용하여 런타임에 문서에 추가하는 콘텐츠 컨트롤을 보호할 수도 있습니다. 자세한 내용은 방법: Word 문서에 콘텐츠 컨트롤 추가를 참조하세요.

디자인 타임에 콘텐츠 컨트롤을 보호하려면

  1. Visual Studio 디자이너에 호스트된 문서에서 보호하려는 콘텐츠 컨트롤을 선택합니다.

  2. 속성 창에서 다음 속성 중 하나 또는 둘 다를 설정합니다.

    • 사용자가 컨트롤을 편집하지 못하도록 차단하려면 LockContentsTrue로 설정합니다.

    • 사용자가 컨트롤을 삭제하지 못하도록 차단하려면 LockContentControlTrue로 설정합니다.

  3. 확인을 클릭합니다.

런타임에 콘텐츠 컨트롤을 보호하려면

  1. 콘텐츠 컨트롤의 LockContents 속성을 true로 설정하여 사용자가 컨트롤을 편집하지 못하도록 하고, LockContentControl 속성을 true로 설정하여 사용자가 컨트롤을 삭제하지 못하도록 합니다.

    다음 코드 예제에서는 문서 수준 프로젝트에서 두 가지 RichTextContentControl 개체의 LockContentsLockContentControl 속성을 사용하는 방법을 보여 줍니다. 이 코드를 실행하려면 프로젝트의 ThisDocument 클래스에 코드를 추가하고 AddProtectedContentControls 이벤트 처리기에서 ThisDocument_Startup 메서드를 호출합니다.

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

    다음 코드 예제에서는 VSTO 추가 기능 프로젝트에서 두 가지 RichTextContentControl 개체의 LockContentsLockContentControl 속성을 사용하는 방법을 보여 줍니다. 이 코드를 실행하려면 프로젝트의 ThisAddIn 클래스에 코드를 추가하고 AddProtectedContentControls 이벤트 처리기에서 ThisAddIn_Startup 메서드를 호출합니다.

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

콘텐츠 컨트롤에 없는 문서 부분 보호

GroupContentControl에 영역을 배치하여 사용자가 문서 영역을 변경하는 것을 방지할 수 있습니다. 이는 다음과 같은 시나리오에서 유용합니다.

  • 콘텐츠 컨트롤을 포함하지 않는 영역을 보호하려고 합니다.

  • 이미 콘텐츠 컨트롤을 포함하는 영역을 보호하려고 하지만 텍스트 또는 보호하려는 기타 항목이 콘텐츠 컨트롤에 없습니다.

참고 항목

포함된 콘텐츠 컨트롤을 포함하는 GroupContentControl을 만드는 경우 포함된 콘텐츠 컨트롤은 자동으로 보호되지 않습니다. 사용자가 포함된 콘텐츠 컨트롤을 편집하지 못하도록 차단하려면 컨트롤의 LockContents 속성을 사용합니다.

디자인 타임에 문서 영역을 보호하려면

  1. Visual Studio 디자이너에 호스트된 문서에서 보호하려는 영역을 선택합니다.

  2. 리본에서 개발자 탭을 클릭합니다.

    참고 항목

    개발자 탭이 표시되지 않는 경우 먼저 개발자 탭을 표시해야 합니다. 자세한 내용은 방법: 리본에 개발자 도구 탭 표시을 참조하세요.

  3. 컨트롤 그룹에서 그룹 드롭다운 단추를 클릭한 다음, 그룹을 클릭합니다.

    보호된 영역을 포함하는 GroupContentControl이 프로젝트의 ThisDocument 클래스에 자동으로 생성됩니다. 그룹 컨트롤을 나타내는 테두리는 디자인 타임에 표시되지만 런타임에는 표시되는 테두리가 없습니다.

런타임에 문서의 영역을 보호하려면

  1. 보호하려는 영역을 프로그래밍 방식으로 선택하고 AddGroupContentControl 메서드를 호출하여 GroupContentControl을 만듭니다.

    문서 수준 프로젝트에 대한 다음 코드 예제에서는 문서의 첫 단락에 텍스트를 추가하고, 첫 단락을 선택한 다음 GroupContentControl을 인스턴스화합니다. 이 코드를 실행하려면 프로젝트의 ThisDocument 클래스에 코드를 추가하고 ProtectFirstParagraph 이벤트 처리기에서 ThisDocument_Startup 메서드를 호출합니다.

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

    VSTO 추가 기능 프로젝트에 대한 다음 코드 예제에서는 활성 문서의 첫 단락에 텍스트를 추가하고, 첫 단락을 선택한 다음 GroupContentControl을 인스턴스화합니다. 이 코드를 실행하려면 프로젝트의 ThisAddIn 클래스에 코드를 추가하고 ProtectFirstParagraph 이벤트 처리기에서 ThisAddIn_Startup 메서드를 호출합니다.

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