콘텐츠 컨트롤
콘텐츠 컨트롤을 사용하여 다음과 같은 기능이 있는 문서 및 템플릿을 디자인할 수 있습니다.
양식과 같이 입력 내용이 제어되는 UI(사용자 인터페이스)
사용자가 문서 또는 템플릿의 보호된 부분을 편집하지 못하도록 제한.자세한 내용은 콘텐츠 컨트롤을 사용하여 문서의 일부분 보호를 참조하십시오.
데이터 소스에 데이터 바인딩.자세한 내용은 콘텐츠 컨트롤에 데이터 바인딩을 참조하십시오.
적용 대상: 이 항목의 정보는 Word 2013 및 Word 2010의 문서 수준 프로젝트 및 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
관련 비디오 데모를 보려면 Binding Data to Word 2007 Content Controls Using Visual Studio Tools for the Office System (3.0)을 참조하십시오.
콘텐츠 컨트롤 개요
콘텐츠 컨트롤은 사용자 입력 및 인쇄 모두에 최적화된 UI를 제공합니다.문서에 콘텐츠 컨트롤을 추가하면 해당 컨트롤은 테두리, 제목 및 사용자에게 지침을 제공할 수 있는 임시 텍스트로 식별됩니다.컨트롤의 테두리와 제목은 인쇄된 문서에는 나타나지 않습니다.
예를 들어 사용자가 문서의 한 부분에 날짜를 입력하도록 하려면 문서에 날짜 선택 콘텐츠 컨트롤을 추가하면 됩니다.사용자가 이 컨트롤을 클릭하면 표준 날짜 선택 UI가 나타납니다.컨트롤의 속성을 설정하여 표시되는 지역별 달력을 설정하고 날짜 형식을 지정할 수도 있습니다.사용자가 날짜를 선택한 후에는 컨트롤의 UI가 숨겨지며, 사용자가 문서를 인쇄할 경우에는 날짜만 나타납니다.
콘텐츠 컨트롤은 다음 작업을 수행하는 데도 유용합니다.
사용자가 문서의 일부분을 편집하거나 삭제하지 못하도록 합니다.이는 문서 또는 템플릿의 특정 정보를 사용자가 읽을 수만 있고 편집할 수는 없도록 하려는 경우나 사용자가 콘텐츠 컨트롤을 편집할 수는 있지만 삭제할 수는 없도록 하려는 경우에 유용합니다.
문서 또는 템플릿의 부분을 데이터에 바인딩합니다.콘텐츠 컨트롤을 데이터베이스 필드, .NET Framework의 관리되는 개체, 문서에 저장된 XML 요소 및 기타 데이터 소스에 바인딩할 수 있습니다.
문서 수준 프로젝트에서는 디자인 타임이나 런타임에 문서에 콘텐츠 컨트롤을 추가할 수 있습니다.응용 프로그램 수준 프로젝트에서는 런타임에 열려 있는 문서에 콘텐츠 컨트롤을 추가할 수 있습니다.자세한 내용은 방법: Word 문서에 콘텐츠 컨트롤 추가을 참조하십시오.
[!참고]
Open XML 형식으로 저장된 문서에서만 콘텐츠 컨트롤을 사용할 수 있습니다.Word 97-2003 문서(.doc) 형식으로 저장된 문서에서는 콘텐츠 컨트롤을 사용할 수 없습니다.
콘텐츠 컨트롤 형식
문서에 추가할 수 있는 콘텐츠 컨트롤 형식에는 9가지가 있습니다.콘텐츠 컨트롤 대부분의 경우 Microsoft.Office.Tools.Word 네임스페이스에 해당 형식이 있습니다.사용 가능한 모든 콘텐츠 컨트롤을 나타낼 수 있는 제네릭 ContentControl을 사용할 수도 있습니다.사용 가능한 각 콘텐츠 컨트롤을 사용하는 방법을 보여 주는 연습은 연습: 콘텐츠 컨트롤을 사용하여 서식 파일 만들기를 참조하십시오.
문서 블록 갤러리
사용자는 문서 블록 갤러리의 문서 블록 목록에서 문서 블록을 선택하여 문서에 삽입할 수 있습니다.문서 블록은 여러 번 사용하기 위해 만든 일반적인 표지, 서식 지정된 표 또는 머리글과 같은 콘텐츠 부분입니다.자세한 내용은 BuildingBlockGalleryContentControl 형식을 참조하십시오.문서 블록에 대한 자세한 내용은 What's New for Developers in Word 2007을 참조하십시오.
Check Box
확인란은 이진 상태(선택되거나 선택 취소된 상태)를 나타내는 UI를 제공합니다.
Microsoft Visual Studio Tools for Office Runtime에서는 다른 콘텐츠 컨트롤 형식과 달리 확인란 콘텐츠 컨트롤을 나타내는 특정 형식을 제공하지 않습니다.즉, CheckBoxContentControl 형식이 없습니다.그러나 문서에 프로그래밍 방식으로 제네릭 ContentControl을 추가하여 확인란 콘텐츠 컨트롤을 만들 수 있습니다.자세한 내용은 Word 프로젝트의 확인란 콘텐츠 컨트롤을.
Combo Box
콤보 상자에는 사용자가 선택할 수 있는 항목 목록이 표시됩니다.드롭다운 목록과 달리 콤보 상자에서는 사용자가 직접 항목을 추가할 수 있습니다.자세한 내용은 ComboBoxContentControl 형식을 참조하십시오.
날짜 선택
날짜 선택 컨트롤은 날짜를 선택하기 위한 달력 UI를 제공합니다.최종 사용자가 컨트롤의 드롭다운 화살표를 클릭하면 달력이 나타납니다.지역별 달력과 여러 가지 날짜 형식을 사용할 수 있습니다.자세한 내용은 DatePickerContentControl 형식을 참조하십시오.
드롭다운 목록
드롭다운 목록에는 사용자가 선택할 수 있는 항목 목록이 표시됩니다.콤보 상자와 달리 드롭다운 목록에서는 사용자가 항목을 추가하거나 편집할 수 없습니다.자세한 내용은 DropDownListContentControl 형식을 참조하십시오.
Group
그룹 컨트롤은 문서에서 사용자가 편집하거나 삭제할 수 없는 보호된 영역을 정의합니다.그룹 컨트롤에는 텍스트, 표, 그래픽 및 기타 콘텐츠 컨트롤과 같은 문서 항목이 들어 있을 수 있습니다.자세한 내용은 GroupContentControl 형식을 참조하십시오.
그림
그림 컨트롤에는 이미지가 표시됩니다.디자인 타임 또는 런타임에 이미지를 지정할 수 있으며 사용자가 이 컨트롤을 클릭하여 문서에 삽입할 이미지를 선택할 수도 있습니다.자세한 내용은 PictureContentControl 형식을 참조하십시오.
서식 있는 텍스트
서식 있는 텍스트 컨트롤에는 텍스트나 표, 그림, 기타 콘텐츠 컨트롤과 같은 항목이 포함됩니다.자세한 내용은 RichTextContentControl 형식을 참조하십시오.
일반 텍스트
일반 텍스트 컨트롤에는 텍스트가 포함됩니다.일반 텍스트 컨트롤에는 표, 그림, 기타 콘텐츠 컨트롤과 같은 항목은 포함될 수 없습니다.또한 일반 텍스트 컨트롤의 모든 텍스트에는 동일한 서식이 적용됩니다.예를 들어 일반 텍스트 컨트롤에 포함된 문장의 단어 하나를 기울임꼴로 표시할 경우 해당 컨트롤에 포함된 모든 텍스트가 기울임꼴로 표시됩니다.자세한 내용은 PlainTextContentControl 형식을 참조하십시오.
제네릭 콘텐츠 컨트롤
제네릭 콘텐츠 컨트롤은 사용 가능한 모든 콘텐츠 컨트롤 형식을 나타낼 수 있는 ContentControl 개체입니다.Type 속성을 사용하여 ContentControl 개체가 다른 형식의 콘텐츠 컨트롤처럼 동작하도록 변경할 수 있습니다.예를 들어 일반 텍스트 컨트롤을 나타내는 ContentControl 개체를 만들 경우 런타임에 이를 변경하여 콤보 상자처럼 동작하도록 할 수 있습니다.
ContentControl 개체는 런타임에만 만들 수 있고 디자인 타임에는 만들 수 없습니다.자세한 내용은 방법: Word 문서에 콘텐츠 컨트롤 추가을 참조하십시오.
콘텐츠 컨트롤의 공통 기능
콘텐츠 컨트롤은 대부분 공통된 작업을 수행하는 데 사용할 수 있는 여러 멤버를 공유합니다.다음 표에서는 이러한 멤버를 사용하여 수행할 수 있는 작업을 설명합니다.
작업 |
작업 방법 |
---|---|
컨트롤에 표시되는 텍스트를 가져오거나 설정합니다. |
Text 속성을 사용합니다.
참고
PictureContentControl 및 ContentControl 형식에는 이 속성이 없습니다.
|
사용자가 컨트롤을 편집하거나 컨트롤이 데이터 소스의 데이터로 채워지거나 컨트롤의 내용이 삭제될 때까지 컨트롤에 표시되는 임시 텍스트를 가져오거나 설정합니다. |
PlaceholderText 속성을 사용합니다.
참고
PictureContentControl 형식에는 이 속성이 없습니다.
|
사용자가 콘텐츠 컨트롤을 클릭할 때 컨트롤 테두리에 표시되는 제목을 가져오거나 설정합니다. |
Title 속성을 사용합니다. |
사용자가 컨트롤을 편집한 후 문서에서 컨트롤을 자동으로 제거합니다.컨트롤의 텍스트는 문서에 유지합니다. |
Temporary 속성을 사용합니다. |
사용자가 콘텐츠 컨트롤의 안쪽을 클릭하거나 프로그래밍 방식으로 커서가 콘텐츠 컨트롤의 안쪽에 놓이면 코드를 실행합니다. |
컨트롤의 Entering 이벤트를 처리합니다. |
사용자가 콘텐츠 컨트롤의 바깥쪽을 클릭하거나 프로그래밍 방식으로 커서가 콘텐츠 컨트롤의 바깥쪽에 놓이면 코드를 실행합니다. |
컨트롤의 Exiting 이벤트를 처리합니다. |
다시 실행 또는 실행 취소 작업의 결과로 콘텐츠 컨트롤이 문서에 추가된 후 코드를 실행합니다. |
컨트롤의 Added 이벤트를 처리합니다. |
콘텐츠 컨트롤이 문서에서 삭제되기 직전에 코드를 실행합니다. |
컨트롤의 Deleting 이벤트를 처리합니다. |
콘텐츠 컨트롤을 사용하여 문서의 일부분 보호
문서의 일부분을 보호하면 사용자가 문서의 해당 부분에 있는 내용을 변경하거나 삭제하지 못하게 됩니다.콘텐츠 컨트롤을 사용하여 문서의 일부분을 보호하는 방법에는 여러 가지가 있습니다.
보호하려는 영역이 콘텐츠 컨트롤 내에 있는 경우 콘텐츠 컨트롤의 속성을 사용하여 사용자가 해당 컨트롤을 편집하거나 삭제하지 못하도록 할 수 있습니다.
LockContents 속성은 사용자가 내용을 편집하지 못하도록 합니다.
LockContentControl 속성은 사용자가 컨트롤을 삭제하지 못하도록 합니다.
보호하려는 영역이 콘텐츠 컨트롤 내에 있지 않거나 콘텐츠 컨트롤과 다른 형식의 콘텐츠가 들어 있는 영역을 보호하려는 경우 전체 영역을 GroupContentControl에 배치할 수 있습니다.다른 콘텐츠 컨트롤과 달리 GroupContentControl은 사용자에게 표시되는 UI를 제공하지 않습니다.이 컨트롤은 오직 사용자가 편집할 수 없는 영역을 정의하기 위한 것입니다.
[!참고]
포함된 콘텐츠 컨트롤이 들어 있는 GroupContentControl을 만들 경우 포함된 콘텐츠 컨트롤은 자동으로 보호되지 않습니다.사용자가 컨트롤 내용을 편집하지 못하도록 하려면 포함된 각 컨트롤의 LockContents 속성을 사용해야 합니다.
콘텐츠 컨트롤을 사용하여 문서의 일부분을 보호하는 방법에 대한 자세한 내용은 방법: 콘텐츠 컨트롤을 사용하여 문서 부분 보호를 참조하십시오.
콘텐츠 컨트롤에 데이터 바인딩
콘텐츠 컨트롤을 데이터 소스에 바인딩하여 문서에 데이터를 표시할 수 있습니다.데이터 소스가 업데이트되면 콘텐츠 컨트롤에 변경 내용이 반영됩니다.변경 내용을 데이터 소스에 다시 저장할 수도 있습니다.
콘텐츠 컨트롤에서는 다음과 같은 데이터 바인딩 옵션을 제공합니다.
Windows Forms과 동일한 데이터 바인딩 모델을 사용하여 데이터베이스 필드 또는 관리되는 개체에 콘텐츠 컨트롤을 바인딩할 수 있습니다.
문서에 포함된 XML 부분(사용자 지정 XML 부분이라고도 함)의 요소에 콘텐츠 컨트롤을 바인딩할 수 있습니다.
Office 솔루션의 호스트 컨트롤을 데이터에 바인딩하는 방법에 대한 개요는 Office 솔루션의 컨트롤에 데이터 바인딩을 참조하십시오.
Windows Forms 데이터 바인딩 모델 사용
대부분의 콘텐츠 컨트롤은 Windows Forms에서 사용하는 단순 데이터 바인딩 모델을 지원합니다.단순 데이터 바인딩은 데이터 테이블의 열 값과 같은 단일 데이터 요소에 컨트롤 속성이 바인딩됨을 의미합니다.자세한 내용은 데이터 바인딩 및 Windows Forms을 참조하십시오.
문서 수준 프로젝트에서는 Visual Studio의 데이터 소스 창을 사용하여 콘텐츠 컨트롤에 데이터를 바인딩할 수 있습니다.데이터 바인딩된 콘텐츠 컨트롤을 문서에 추가하는 방법에 대한 자세한 내용은 방법: 데이터베이스의 데이터로 문서 채우기 및 방법: 개체의 데이터로 문서 채우기를 참조하십시오.
다음 표에서는 데이터 소스 창의 각 데이터 형식에 바인딩할 수 있는 콘텐츠 컨트롤을 보여 줍니다.
데이터 형식 |
기본 콘텐츠 컨트롤 |
이 데이터 형식에 바인딩할 수 있는 다른 콘텐츠 컨트롤 |
---|---|---|
Byte 배열 |
없음 |
문서 수준 및 응용 프로그램 프로젝트에서는 컨트롤에 대한 DataBindings 속성의 Add() 메서드를 사용하여 데이터 소스에 콘텐츠 컨트롤을 프로그래밍 방식으로 바인딩할 수 있습니다.이 경우 Add() 메서드의 propertyName 매개 변수에 Text 문자열을 전달합니다.Text 속성은 콘텐츠 컨트롤의 기본 데이터 바인딩 속성입니다.
콘텐츠 컨트롤에서는 컨트롤의 변경 내용이 데이터 소스에 업데이트되는 양방향 데이터 바인딩도 지원합니다.자세한 내용은 방법: Host 컨트롤의 데이터로 데이터 소스 업데이트을 참조하십시오.
[!참고]
콘텐츠 컨트롤은 복합 데이터 바인딩을 지원하지 않습니다.Windows Forms 데이터 모델을 사용하여 DropDownListContentControl 또는 ComboBoxContentControl을 데이터 소스에 바인딩하면 사용자가 해당 컨트롤을 클릭할 때 단일 값만 표시됩니다.이러한 컨트롤을 사용자가 선택할 수 있는 여러 데이터 값에 바인딩하려면 해당 컨트롤을 사용자 지정 XML 부분의 요소에 바인딩합니다.
콘텐츠 컨트롤을 사용자 지정 XML 부분에 바인딩
문서에 포함된 사용자 지정 XML 부분의 요소에 일부 콘텐츠 컨트롤을 바인딩할 수 있습니다.사용자 지정 XML 부분에 대한 자세한 내용은 사용자 지정 XML 부분 개요를 참조하십시오.
사용자 지정 XML 부분의 요소에 콘텐츠 컨트롤을 바인딩하려면 컨트롤의 XMLMapping 속성을 사용합니다.다음 코드 예제에서는 문서에 이미 추가된 사용자 지정 XML 부분의 Product 노드 아래에 있는 Price 요소에 PlainTextContentControl을 바인딩하는 방법을 보여 줍니다.
plainTextContentControl1.XMLMapping.SetMapping("/Product/Price")
plainTextContentControl1.XMLMapping.SetMapping("/Product/Price", String.Empty, null);
사용자 지정 XML 부분에 콘텐츠 컨트롤을 바인딩하는 방법을 보다 자세히 보여 주는 연습은 연습: 콘텐츠 컨트롤을 사용자 지정 XML 부분에 바인딩을 참조하십시오.
사용자 지정 XML 부분에 콘텐츠 컨트롤을 바인딩하면 양방향 데이터 바인딩이 자동으로 설정됩니다.사용자가 컨트롤의 텍스트를 편집하면 해당 XML 요소가 자동으로 업데이트됩니다.마찬가지로 사용자 지정 XML 부분의 요소 값이 변경되면 해당 XML 요소에 바인딩된 콘텐츠 컨트롤에 새 데이터가 표시됩니다.
다음 형식의 콘텐츠 컨트롤을 사용자 지정 XML 부분에 바인딩할 수 있습니다.
콘텐츠 컨트롤에 대한 데이터 바인딩 이벤트
모든 콘텐츠 컨트롤에서는 데이터 소스가 업데이트되기 전에 컨트롤의 텍스트가 특정 조건을 만족하는지 확인하는 등의 데이터 관련 작업을 수행하기 위해 처리할 수 있는 여러 가지 이벤트를 제공합니다.다음 표에서는 데이터 바인딩과 관련된 콘텐츠 컨트롤 이벤트를 보여 줍니다.
Task |
Event |
---|---|
Word에서 사용자 지정 XML 부분에 바인딩된 콘텐츠 컨트롤의 텍스트가 자동으로 업데이트되기 직전에 코드를 실행합니다. |
|
Word에서 콘텐츠 컨트롤에 바인딩된 사용자 지정 XML 부분의 데이터가 자동으로 업데이트되기 직전, 즉 콘텐츠 컨트롤의 텍스트가 변경된 후에 코드를 실행합니다. |
|
사용자가 작성한 코드를 실행하여 사용자 지정 조건에 따라 컨트롤 내용의 유효성을 검사합니다. |
|
컨트롤 내용의 유효성을 검사한 후에 코드를 실행합니다. |
콘텐츠 컨트롤의 제한 사항
Office 프로젝트에서 콘텐츠 컨트롤을 사용할 때는 다음 제한 사항을 알고 있어야 합니다.
디자인 타임과 런타임의 동작 차이점
Microsoft Office Word에서 런타임에 콘텐츠 컨트롤에 적용되는 많은 제한 사항은 디자인 타임에는 적용되지 않습니다.Visual Studio에서 문서 수준 솔루션의 UI를 디자인할 때는 런타임에 지원되는 방식으로만 콘텐츠 컨트롤을 수정해야 합니다.
디자인 타임에 콘텐츠 컨트롤을 런타임에 지원되지 않는 방식으로 수정하더라도 Visual Studio 디자이너에서는 지원되지 않는 변경임을 알려 주지 않습니다.그러나 프로젝트를 디버깅 또는 실행할 때나 프로젝트를 저장했다가 다시 열 때 문서 복구 권한이 있어야 한다는 오류 메시지가 표시됩니다.문서를 복구하면 지원되지 않는 내용 및 서식이 모두 컨트롤에서 제거됩니다.
예를 들어 디자인 타임에 PlainTextContentControl에 표를 추가하는 데는 제한이 없지만,PlainTextContentControl 개체는 런타임에 표를 포함할 수 없으므로 문서를 열면 오류 메시지가 표시됩니다.
또한 콘텐츠 컨트롤의 동작을 정의하는 많은 속성이 디자인 타임에는 적용되지 않습니다.예를 들어 디자인 타임에 콘텐츠 컨트롤의 LockContents 속성을 True로 설정해도 Visual Studio 디자이너에서 컨트롤의 텍스트를 편집할 수 있습니다.이 속성은 사용자가 런타임에 컨트롤을 편집하지 못하도록만 합니다.
이벤트 제한 사항
콘텐츠 컨트롤에서는 사용자가 컨트롤의 텍스트나 다른 항목을 변경할 때 발생하는 이벤트를 제공합니다.예를 들어 사용자가 DropDownListContentControl 또는 ComboBoxContentControl에서 다른 항목을 선택할 경우에 발생하는 이벤트는 없습니다.
사용자가 콘텐츠 컨트롤의 내용을 편집할 때 이를 확인하려면 컨트롤을 사용자 지정 XML 부분에 바인딩한 다음 StoreUpdating 이벤트를 처리합니다.이 이벤트는 사용자가 사용자 지정 XML 부분에 바인딩된 컨트롤의 내용을 변경할 때 발생합니다.사용자 지정 XML 부분에 콘텐츠 컨트롤을 바인딩하는 방법을 보여 주는 연습은 연습: 콘텐츠 컨트롤을 사용자 지정 XML 부분에 바인딩을 참조하십시오.
Word 프로젝트의 확인란 콘텐츠 컨트롤
Word 2010에는 확인란을 나타내는 새로운 형식의 콘텐츠 컨트롤이 추가되었습니다.그러나 Microsoft Visual Studio Tools for Office Runtime에서는 Office 프로젝트에 사용할 수 있는 해당 CheckBoxContentControl 형식을 제공하지 않습니다.확인란 콘텐츠 컨트롤을 만들려면는 Word 2013 또는 Word 2010 프로젝트를 사용 하는 AddContentControl 메서드는 Microsoft.Office.Tools.Word.ContentControl 개체를 전달 하 고는 wdContentControlCheckBox 값 확인란 콘텐츠 컨트롤을 지정 하는 방법에.다음 코드 예제에서는 이 작업을 수행하는 방법을 보여 줍니다.
Me.Paragraphs(1).Range.InsertParagraphBefore()
Me.Paragraphs(1).Range.Select()
Dim checkBoxControl1 As Microsoft.Office.Tools.Word.ContentControl =
Me.Controls.AddContentControl("checkBoxControl1", Word.WdContentControlType.wdContentControlCheckBox)
checkBoxControl1.Checked = True
this.Paragraphs[1].Range.InsertParagraphBefore();
this.Paragraphs[1].Range.Select();
Microsoft.Office.Tools.Word.ContentControl checkBoxControl1 =
this.Controls.AddContentControl("checkBoxControl1", Word.WdContentControlType.wdContentControlCheckBox);
checkBoxControl1.Checked = true;
참고 항목
작업
개념
호스트 항목 및 호스트 컨트롤의 프로그래밍에 대한 제한 사항