다음을 통해 공유


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

업데이트: 2008년 7월

적용 대상

이 항목의 정보는 지정된 Visual Studio Tools for Office 프로젝트 및 Microsoft Office 버전에만 적용됩니다.

프로젝트 형식

  • 문서 수준 프로젝트

  • 응용 프로그램 수준 프로젝트

Microsoft Office 버전

  • Word 2007

자세한 내용은 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.

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

  • 콘텐츠 컨트롤을 보호할 수 있습니다.

  • 콘텐츠 컨트롤에 없는 문서의 일부분을 보호할 수 있습니다.

콘텐츠 컨트롤 보호

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

Visual Studio 2008 SP1(서비스 팩 1)부터는 런타임에 응용 프로그램 수준 프로젝트를 사용하여 문서에 추가하는 콘텐츠 컨트롤을 보호할 수도 있습니다. 자세한 내용은 방법: Word 문서에 콘텐츠 컨트롤 추가를 참조하십시오.

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

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

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

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

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

  3. 확인을 클릭합니다.

런타임에 문서 수준 프로젝트에서 콘텐츠 컨트롤을 보호하려면

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

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

    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로 설정하여 컨트롤을 삭제하지 못하도록 합니다.

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

    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에 배치하여 사용자가 해당 문서 영역을 변경하지 못하도록 할 수 있습니다. 이 방법은 다음과 같은 경우에 유용합니다.

  • 콘텐츠 컨트롤이 들어 있지 않은 영역을 보호하려는 경우

  • 콘텐츠 컨트롤이 이미 들어 있는 영역을 보호하려고 하지만 보호할 텍스트나 다른 항목이 콘텐츠 컨트롤에 없는 경우

참고:

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

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

  1. Visual Studio 디자이너에 호스팅된 문서에서 보호할 영역을 선택합니다.

  2. 리본 메뉴에서 개발 도구 탭을 클릭합니다.

    참고:

    개발 도구 탭이 표시되지 않으면 먼저 이 탭을 표시해야 합니다. 자세한 내용은 방법: 리본 메뉴에 개발 도구 탭 표시를 참조하십시오.

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

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

런타임에 문서 수준 프로젝트에서 문서의 영역을 보호하려면

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

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

    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 클래스에 이 코드를 추가하고 ThisAddIn_Startup 이벤트 처리기에서 ProtectFirstParagraph 메서드를 호출합니다.

    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년 7월

응용 프로그램 수준 추가 기능에 대한 절차가 추가되었습니다.

SP1 기능 변경