다음을 통해 공유


Word 문서에 콘텐츠 컨트롤 추가

문서 수준 Word 프로젝트에서는 디자인 타임 또는 런타임에 프로젝트의 문서에 콘텐츠 컨트롤을 추가할 수 있습니다. Word VSTO 추가 기능 프로젝트에서는 런타임에 열려 있는 임의 문서에 콘텐츠 컨트롤을 추가할 수 있습니다.

적용 대상: 이 항목의 정보는 Word의 문서 수준 프로젝트 및 VSTO 추가 기능 프로젝트에 적용됩니다. 자세한 내용은 Office 애플리케이션 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하세요.

이 항목에서는 다음 작업에 대해 설명합니다.

디자인 타임에 콘텐츠 컨트롤 추가

디자인 타임에 문서 수준 프로젝트의 문서에 콘텐츠 컨트롤을 추가하는 여러 가지 방법이 있습니다.

  • 도구 상자Word 컨트롤탭에서 콘텐츠 컨트롤을 추가합니다.

  • Word에서 네이티브 콘텐츠 컨트롤을 추가하는 것과 동일한 방식으로 문서에 콘텐츠 컨트롤을 추가합니다.

  • 데이터 소스 창에서 콘텐츠 컨트롤을 문서로 끌어옵니다. 이 기능은 컨트롤을 만들 때 컨트롤을 데이터에 바인딩하려는 경우에 유용합니다. 자세한 내용은 방법: 개체의 데이터로 문서 채우기방법: 데이터베이스의 데이터로 문서 채우기를 참조하세요.

    참고 항목

    일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 IDE 개인 설정을 참조하세요.

도구 상자를 사용하여 문서에 콘텐츠 컨트롤을 추가하려면

  1. Visual Studio 디자이너에 호스트된 문서에서 콘텐츠 컨트롤을 추가하려는 위치에 커서를 놓거나 콘텐츠 컨트롤로 바꾸려는 텍스트를 선택합니다.

  2. 도구 상자 를 열고 Word 컨트롤 탭을 클릭합니다.

  3. 다음 방법 중 하나로 컨트롤을 추가합니다.

    • 도구 상자에서 콘텐츠 컨트롤을 두 번 클릭합니다.

      또는

    • 도구 상자에서 콘텐츠 컨트롤을 클릭하고 Enter 키를 누릅니다.

      또는

    • 도구 상자 에서 문서로 콘텐츠 컨트롤을 끌어옵니다. 콘텐츠 컨트롤이 마우스 포인터 위치가 아니라 문서의 현재 선택 영역에 추가됩니다.

참고 항목

GroupContentControl 도구 상자 를 사용하여을 추가할 수 없습니다. Word에서나 런타임에만 GroupContentControl 을 추가할 수 있습니다.

참고 항목

Visual Studio는 도구 상자에 확인란 콘텐츠 컨트롤을 제공하지 않습니다. 문서에 확인란 콘텐츠 컨트롤을 추가하려면 프로그래밍 방식으로 ContentControl 개체를 만들어야 합니다. 자세한 내용은 콘텐츠 컨트롤을 참조하세요.

Word에서 문서에 콘텐츠 컨트롤을 추가하려면

  1. Visual Studio 디자이너에 호스트된 문서에서 콘텐츠 컨트롤을 추가하려는 위치에 커서를 놓거나 콘텐츠 컨트롤로 바꾸려는 텍스트를 선택합니다.

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

    참고 항목

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

  3. 컨트롤 그룹에서 추가하려는 콘텐츠 컨트롤의 아이콘을 클릭합니다.

문서 수준 프로젝트에서 런타임에 콘텐츠 컨트롤 추가

프로젝트에서 Controls 클래스의 ThisDocument 속성 메서드를 사용하여 프로그래밍 방식으로 런타임에 문서에 콘텐츠 컨트롤을 추가할 수 있습니다. 각 메서드에 다음과 같은 방법으로 콘텐츠 컨트롤을 추가하는 데 사용할 수 있는 세 개의 오버로드가 있습니다.

  • 현재 선택 영역에 컨트롤을 추가합니다.

  • 지정된 범위에 컨트롤을 추가합니다.

  • 문서의 네이티브 콘텐츠 컨트롤을 기반으로 하는 컨트롤을 추가합니다.

    동적으로 생성된 콘텐츠 컨트롤은 문서를 닫을 때 문서에 유지되지 않습니다. 그러나 네이티브 콘텐츠 컨트롤은 문서에 남아 있습니다. 다음에 문서를 열 때 네이티브 콘텐츠 컨트롤을 기반으로 하는 콘텐츠 컨트롤을 다시 만들 수 있습니다. 자세한 내용은 런타임 시 Office 문서에 컨트롤 추가를 참조하세요.

참고 항목

Word 2010 프로젝트에서 문서에 확인란 콘텐츠 컨트롤을 추가하려면 ContentControl 개체를 만들어야 합니다. 자세한 내용은 콘텐츠 컨트롤을 참조하세요.

현재 선택 영역에 콘텐츠 컨트롤을 추가하려면

  1. 이름이 Add<컨트롤 클래스>이고 새 컨트롤의 이름을 나타내는 단일 매개 변수가 있는 ControlCollection 메서드를 사용합니다. 여기서 컨트롤 클래스는 추가할 콘텐츠 컨트롤의 클래스 이름(예: AddRichTextContentControl)입니다.

    다음 코드 예제에서는 AddRichTextContentControl 메서드를 사용하여 문서의 시작 부분에 새 RichTextContentControl 을 추가합니다. 이 코드를 실행하려면 프로젝트의 ThisDocument 클래스에 코드를 추가하고 AddRichTextControlAtSelection 이벤트 처리기에서 ThisDocument_Startup 메서드를 호출합니다.

    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1;
    
    private void AddRichTextControlAtSelection()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
        this.Paragraphs[1].Range.Select();
    
        richTextControl1 = this.Controls.AddRichTextContentControl("richTextControl1");
        richTextControl1.PlaceholderText = "Enter your first name";
    }
    

지정된 범위에 콘텐츠 컨트롤을 추가하려면

  1. 이름이 Add<컨트롤 클래스>이고 Range 매개 변수가 있는 ControlCollection 메서드를 사용합니다. 여기서 컨트롤 클래스는 추가할 콘텐츠 컨트롤 클래스의 이름(예: AddRichTextContentControl)입니다.

    다음 코드 예제에서는 AddRichTextContentControl 메서드를 사용하여 문서의 시작 부분에 새 RichTextContentControl 을 추가합니다. 이 코드를 실행하려면 프로젝트의 ThisDocument 클래스에 코드를 추가하고 AddRichTextControlAtRange 이벤트 처리기에서 ThisDocument_Startup 메서드를 호출합니다.

    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2;
    
    private void AddRichTextControlAtRange()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
    
        richTextControl2 = this.Controls.AddRichTextContentControl(this.Paragraphs[1].Range,
            "richTextControl2");
        richTextControl2.PlaceholderText = "Enter your first name";
    }
    

네이티브 콘텐츠 컨트롤을 기반으로 하는 콘텐츠 컨트롤을 추가하려면

  1. 이름이 Add<컨트롤 클래스>이고 Microsoft.Office.Interop.Word.ContentControl 매개 변수가 있는 ControlCollection 메서드를 사용합니다. 여기서 컨트롤 클래스는 추가할 콘텐츠 컨트롤 클래스의 이름(예: AddRichTextContentControl)입니다.

    다음 코드 예제에서는 AddRichTextContentControl 메서드를 사용하여 문서에 있는 각 네이티브 서식 있는 텍스트 컨트롤에 대한 새 RichTextContentControl 을 만듭니다. 이 코드를 실행하려면 프로젝트의 ThisDocument 클래스에 코드를 추가하고 CreateRichTextControlsFromNativeControls 이벤트 처리기에서 ThisDocument_Startup 메서드를 호출합니다.

    private System.Collections.Generic.List
        <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls;
    
    private void CreateRichTextControlsFromNativeControls()
    {
        if (this.ContentControls.Count <= 0)
            return;
    
        richTextControls = new System.Collections.Generic.List
            <Microsoft.Office.Tools.Word.RichTextContentControl>();
        int count = 0;
    
        foreach (Word.ContentControl nativeControl in this.ContentControls)
        {
            if (nativeControl.Type ==
                Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText)
            {
                count++;
                Microsoft.Office.Tools.Word.RichTextContentControl tempControl =
                    this.Controls.AddRichTextContentControl(nativeControl,
                    "VSTORichTextControl" + count.ToString());
                richTextControls.Add(tempControl);
            }
        }
    }
    

VSTO 추가 기능 프로젝트에서 런타임에 콘텐츠 컨트롤 추가

VSTO 추가 기능을 사용하여 프로그래밍 방식으로 런타임에 열려 있는 문서에 콘텐츠 컨트롤을 추가할 수 있습니다. 이렇게 하려면 열려 있는 문서를 기반으로 하는 Document 호스트 항목을 생성한 다음 이 호스트 항목의 Controls 속성 메서드를 사용합니다. 각 메서드에 다음과 같은 방법으로 콘텐츠 컨트롤을 추가하는 데 사용할 수 있는 세 개의 오버로드가 있습니다.

  • 현재 선택 영역에 컨트롤을 추가합니다.

  • 지정된 범위에 컨트롤을 추가합니다.

  • 문서의 네이티브 콘텐츠 컨트롤을 기반으로 하는 컨트롤을 추가합니다.

    동적으로 생성된 콘텐츠 컨트롤은 문서를 닫을 때 문서에 유지되지 않습니다. 그러나 네이티브 콘텐츠 컨트롤은 문서에 남아 있습니다. 다음에 문서를 열 때 네이티브 콘텐츠 컨트롤을 기반으로 하는 콘텐츠 컨트롤을 다시 만들 수 있습니다. 자세한 내용은 Office 문서에서 동적 컨트롤 유지를 참조하세요.

    VSTO 추가 기능 프로젝트에서 호스트 항목을 생성하는 방법에 대한 자세한 내용은 VSTO 추가 기능에서 런타임 시 Word 문서 및 Excel 통합 문서 확장을 참조하세요.

참고 항목

문서에 확인란 콘텐츠 컨트롤을 추가하려면 ContentControl 개체를 만들어야 합니다. 자세한 내용은 콘텐츠 컨트롤을 참조하세요.

현재 선택 영역에 콘텐츠 컨트롤을 추가하려면

  1. 이름이 Add<컨트롤 클래스>이고 새 컨트롤의 이름을 나타내는 단일 매개 변수가 있는 ControlCollection 메서드를 사용합니다. 여기서 컨트롤 클래스는 추가할 콘텐츠 컨트롤의 클래스 이름(예: AddRichTextContentControl)입니다.

    다음 코드 예제에서는 AddRichTextContentControl 메서드를 사용하여 활성 문서의 시작 부분에 새 RichTextContentControl 을 추가합니다. 이 코드를 실행하려면 프로젝트의 ThisAddIn 클래스에 코드를 추가하고 AddRichTextControlAtSelection 이벤트 처리기에서 ThisAddIn_Startup 메서드를 호출합니다.

    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1;
    
    private void AddRichTextControlAtSelection()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
        currentDocument.Paragraphs[1].Range.Select();
    
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1");
        richTextControl1.PlaceholderText = "Enter your first name";
    }
    

지정된 범위에 콘텐츠 컨트롤을 추가하려면

  1. 이름이 Add<컨트롤 클래스>이고 Range 매개 변수가 있는 ControlCollection 메서드를 사용합니다. 여기서 컨트롤 클래스는 추가할 콘텐츠 컨트롤 클래스의 이름(예: AddRichTextContentControl)입니다.

    다음 코드 예제에서는 AddRichTextContentControl 메서드를 사용하여 활성 문서의 시작 부분에 새 RichTextContentControl 을 추가합니다. 이 코드를 실행하려면 프로젝트의 ThisAddIn 클래스에 코드를 추가하고 AddRichTextControlAtRange 이벤트 처리기에서 ThisAddIn_Startup 메서드를 호출합니다.

    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2;
    
    private void AddRichTextControlAtRange()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
    
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        richTextControl2 = extendedDocument.Controls.AddRichTextContentControl(
            currentDocument.Paragraphs[1].Range, "richTextControl2");
        richTextControl2.PlaceholderText = "Enter your first name";
    }
    

네이티브 콘텐츠 컨트롤을 기반으로 하는 콘텐츠 컨트롤을 추가하려면

  1. 이름이 Add<컨트롤 클래스>이고 Microsoft.Office.Interop.Word.ContentControl 매개 변수가 있는 ControlCollection 메서드를 사용합니다. 여기서 컨트롤 클래스는 추가할 콘텐츠 컨트롤 클래스의 이름(예: AddRichTextContentControl)입니다.

    다음 코드 예제에서는 AddRichTextContentControl 메서드를 사용하여 문서가 열린 후 문서에 있는 각 네이티브 서식 있는 텍스트 컨트롤에 대한 새 RichTextContentControl 을 만듭니다. 이 코드를 실행하려면 프로젝트의 ThisAddIn 클래스에 코드를 추가합니다.

    private System.Collections.Generic.List
        <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls;
    
    private void Application_DocumentOpen(Microsoft.Office.Interop.Word.Document Doc)
    {
        if (Doc.ContentControls.Count > 0)
        {
            Document extendedDocument = Globals.Factory.GetVstoObject(Doc);
    
            richTextControls = new System.Collections.Generic.List
                <Microsoft.Office.Tools.Word.RichTextContentControl>();
            int count = 0;
    
            foreach (Word.ContentControl nativeControl in Doc.ContentControls)
            {
                if (nativeControl.Type ==
                    Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText)
                {
                    count++;
                    Microsoft.Office.Tools.Word.RichTextContentControl tempControl =
                        extendedDocument.Controls.AddRichTextContentControl(nativeControl,
                        "VSTORichTextControl" + count.ToString());
                    richTextControls.Add(tempControl);
                }
            }
        }
    }
    

    C#의 경우 Application_DocumentOpen 이벤트 처리기도 DocumentOpen 이벤트에 연결해야 합니다.

    this.Application.DocumentOpen +=
        new Word.ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);