콘텐츠 컨트롤
콘텐츠 컨트롤은 다음과 같은 기능이 있는 문서와 템플릿을 디자인하는 방법을 제공합니다.
양식과 같은 제어된 입력이 있는 UI(사용자 인터페이스).
사용자가 문서 또는 템플릿의 보호된 섹션을 편집하지 못하도록 하는 제한. 자세한 내용은 콘텐츠 컨트롤을 사용하여 문서 부분 보호를 참조하세요.
데이터 소스에 대한 데이터 바인딩. 자세한 내용은 콘텐츠 컨트롤에 데이터 바인딩을 참조하세요.
적용 대상: 이 항목의 정보는 Word의 문서 수준 프로젝트 및 VSTO 추가 기능 프로젝트에 적용됩니다. 자세한 내용은 Office 애플리케이션 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하세요.
관련 비디오 데모를 보려면 Visual Studio Tools for Office system(3.0)을 사용하여 Word 2007 콘텐츠 컨트롤에 데이터 바인딩을 참조하세요.
콘텐츠 컨트롤 정보
콘텐츠 컨트롤은 사용자 입력 및 인쇄 둘 다에 최적화된 UI를 제공합니다. 문서에 콘텐츠 컨트롤을 추가하는 경우 컨트롤은 테두리, 제목 및 사용자에게 지침을 제공할 수 있는 임시 텍스트로 식별됩니다. 컨트롤의 테두리와 제목은 인쇄 버전의 문서에 표시되지 않습니다.
예를 들어 사용자가 문서의 구역에 날짜를 입력하게 하려는 경우 문서에 날짜 선택 콘텐츠 컨트롤을 추가할 수 있습니다. 사용자가 컨트롤을 클릭하면 표준 날짜 선택 UI가 나타납니다. 컨트롤의 속성을 설정하여 표시되는 지역별 달력을 설정하고 날짜 형식을 지정할 수도 있습니다. 사용자가 날짜를 선택하면 컨트롤의 UI가 숨겨지고 사용자가 문서를 인쇄할 경우 날짜만 나타납니다.
콘텐츠 컨트롤은 다음 작업을 수행하는 데에도 도움이 됩니다.
사용자가 문서의 일부를 편집 또는 삭제하지 못하도록 합니다. 이 기능은 사용자가 읽을 수 있지만 편집할 수 없어야 하는 정보가 문서 또는 템플릿에 있는 경우 또는 사용자가 콘텐츠 컨트롤을 편집할 수 있지만 삭제할 수 없도록 하려는 경우에 유용합니다.
문서 또는 템플릿 부분을 데이터에 바인딩합니다. 데이터베이스 필드, .NET Framework의 관리되는 개체, 문서에 저장된 XML 요소 및 기타 데이터 원본에 콘텐츠 컨트롤을 바인딩할 수 있습니다.
문서 수준 프로젝트에서는 디자인 타임 또는 런타임에 콘텐츠 컨트롤을 문서에 추가할 수 있습니다. VSTO 추가 기능 프로젝트에서는 런타임에 열려 있는 임의 문서에 콘텐츠 컨트롤을 추가할 수 있습니다. 자세한 내용은 방법: Word 문서에 콘텐츠 컨트롤 추가를 참조하세요.
참고
Open XML 형식으로 저장된 문서에서만 콘텐츠 컨트롤을 사용할 수 있습니다. Word 97-2003 문서(.doc) 형식으로 저장된 문서에서는 콘텐츠 컨트롤을 사용할 수 없습니다.
콘텐츠 컨트롤 형식
문서에 추가할 수 있는 9가지 형식의 콘텐츠 컨트롤이 있습니다. 대부분의 콘텐츠 컨트롤은 Microsoft.Office.Tools.Word 네임스페이스에 해당 형식이 있습니다. 사용 가능한 콘텐츠 컨트롤 중 하나를 나타낼 수 있는 제네릭 ContentControl을 사용할 수도 있습니다. 사용 가능한 각 콘텐츠 컨트롤을 사용하는 방법을 보여 주는 연습은 연습: 콘텐츠 컨트롤을 사용하여 템플릿 만들기를 참조하세요.
빌드 블록 갤러리
빌드 블록 갤러리를 통해 사용자는 문서에 삽입할 문서 빌드 블록을 목록에서 선택할 수 있습니다. 문서 블록은 일반적인 표지, 서식이 지정된 표 또는 머리글과 같이 여러 번 사용하기 위해 생성된 콘텐츠입니다. 자세한 내용은 BuildingBlockGalleryContentControl 형식을 참조하세요. 빌드 블록에 대한 자세한 내용은 Word 2007의 개발자를 위한 새로운 기능을 참조하세요.
확인란
확인란은 이진 상태(선택됨 또는 선택 취소됨)를 나타내는 UI를 제공합니다.
다른 형식의 콘텐츠 컨트롤과 달리 Visual Studio Tools for Office Runtime은 확인란 콘텐츠 컨트롤을 나타내는 특정 형식을 제공하지 않습니다. 즉, CheckBoxContentControl
형식이 없습니다. 그러나 프로그래밍 방식으로 문서에 제네릭 ContentControl을 추가하여 확인란 콘텐츠 컨트롤을 만들 수 있습니다. 자세한 내용은 Word 프로젝트의 확인란 콘텐츠 컨트롤을 참조하세요.
콤보 상자
콤보 상자에는 사용자가 선택할 수 있는 항목 목록이 표시됩니다. 드롭다운 목록과 달리 콤보 상자를 사용하면 사용자가 고유한 항목을 추가할 수 있습니다. 자세한 내용은 ComboBoxContentControl 형식을 참조하세요.
날짜 선택기
날짜 선택은 날짜를 선택하기 위한 달력 UI를 제공합니다. 최종 사용자가 컨트롤에서 드롭다운 화살표를 클릭하면 달력이 나타납니다. 지역별 달력 및 다른 날짜 형식을 사용할 수 있습니다. 자세한 내용은 DatePickerContentControl 형식을 참조하세요.
드롭다운 목록
드롭다운 목록에는 사용자가 선택할 수 있는 항목 목록이 표시됩니다. 콤보 상자와 달리 드롭다운 목록에서는 사용자가 항목을 추가하거나 편집할 수 없습니다. 자세한 내용은 DropDownListContentControl 형식을 참조하세요.
그룹
그룹 컨트롤은 사용자가 편집하거나 삭제할 수 없는 문서의 보호된 영역을 정의합니다. 그룹 컨트롤에는 텍스트, 표, 그래픽 및 기타 콘텐츠 컨트롤과 같은 모든 문서 항목이 포함될 수 있습니다. 자세한 내용은 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의 데이터 원본 창을 사용하여 데이터를 콘텐츠 컨트롤에 바인딩할 수 있습니다. 데이터 바인딩된 콘텐츠 컨트롤을 문서에 추가하는 방법에 대한 자세한 내용은 방법: 데이터베이스의 데이터로 문서 채우기 및 방법: 개체의 데이터로 문서 채우기를 참조하세요.
다음 표에서는 데이터 원본 창의 각 데이터 형식에 바인딩할 수 있는 콘텐츠 컨트롤을 보여 줍니다.
문서 수준 및 VSTO 추가 기능 프로젝트에서 컨트롤 DataBindings 속성의 Add 메서드를 사용하여 프로그래밍 방식으로 콘텐츠 컨트롤을 데이터 소스에 바인딩할 수 있습니다. 이 작업을 수행하는 경우 Add 메서드의 propertyName 매개 변수에 문자열 Text를 전달합니다. Text 속성은 콘텐츠 컨트롤의 기본 데이터 바인딩 속성입니다.
또한 콘텐츠 컨트롤은 컨트롤의 변경 내용이 데이터 소스에 업데이트되는 양방향 데이터 바인딩을 지원합니다. 자세한 내용은 방법: 호스트 컨트롤의 데이터로 데이터 원본 업데이트를 참조하세요.
참고
콘텐츠 컨트롤은 복잡한 데이터 바인딩을 지원하지 않습니다. Windows Forms 데이터 모델을 사용하여 DropDownListContentControl 또는 ComboBoxContentControl을 데이터 소스에 바인딩하는 경우 사용자가 컨트롤을 클릭하면 단일 값만 표시됩니다. 사용자가 선택할 수 있는 데이터 값 집합에 이러한 컨트롤을 바인딩하려는 경우 사용자 지정 XML 부분의 요소에 해당 컨트롤을 바인딩할 수 있습니다.
콘텐츠 컨트롤을 사용자 지정 XML 부분에 바인딩
문서에 포함된 사용자 지정 XML 부분의 요소에 일부 콘텐츠 컨트롤을 바인딩할 수 있습니다. 사용자 지정 XML 부분에 대한 자세한 내용은 사용자 지정 XML 부분 개요를 참조하세요.
사용자 지정 XML 부분의 요소에 콘텐츠 컨트롤을 바인딩하려면 컨트롤의 XMLMapping 속성을 사용합니다. 다음 코드 예제에서는 이미 문서에 추가된 사용자 지정 XML 부분에서 Product
노드 아래의 Price
요소에 PlainTextContentControl을 바인딩하는 방법을 보여 줍니다.
사용자 지정 XML 부분에 콘텐츠 컨트롤을 바인딩하는 방법을 자세히 보여 주는 연습은 연습: 콘텐츠 컨트롤을 사용자 지정 XML 부분에 바인딩을 참조하세요.
사용자 지정 XML 부분에 콘텐츠 컨트롤을 바인딩하는 경우 양방향 데이터 바인딩이 자동으로 사용됩니다. 사용자가 컨트롤의 텍스트를 편집하는 경우 해당 XML 요소가 자동으로 업데이트됩니다. 마찬가지로, 사용자 지정 XML 부분의 요소 값이 변경되는 경우 XML 요소에 바인딩된 콘텐츠 컨트롤에 새 데이터가 표시됩니다.
사용자 지정 XML 부분에 다음과 같은 형식의 콘텐츠 컨트롤을 바인딩할 수 있습니다.
콘텐츠 컨트롤에 대한 데이터 바인딩 이벤트
모든 콘텐츠 컨트롤은 데이터 소스가 업데이트되기 전에 컨트롤의 텍스트가 특정 조건을 충족하는지 확인하는 작업과 같은 데이터 관련 작업을 수행하기 위해 처리할 수 있는 이벤트 집합을 제공합니다. 다음 표에서는 데이터 바인딩과 관련된 콘텐츠 컨트롤 이벤트를 보여 줍니다.
Task | 이벤트 |
---|---|
Word에서 사용자 지정 XML 부분에 바인딩된 콘텐츠 컨트롤의 텍스트를 자동으로 업데이트하기 바로 전에 코드를 실행합니다. | ContentUpdating |
Word에서 콘텐츠 컨트롤에 바인딩된 사용자 지정 XML 부분의 데이터를 자동으로 업데이트하기 바로 전, 즉 콘텐츠 컨트롤의 텍스트가 변경된 후에 코드를 실행합니다. | StoreUpdating |
사용자 지정 조건에 따라 컨트롤 내용의 유효성을 검사하는 사용자 고유의 코드를 실행합니다. | Validating |
컨트롤 내용의 유효성 검사가 성공적으로 완료된 후에 코드를 실행합니다. | Validated |
콘텐츠 컨트롤의 제한 사항
Office 프로젝트에서 콘텐츠 컨트롤을 사용하는 경우 다음과 같은 제한 사항에 주의하세요.
디자인 타임 및 런타임 간의 동작 차이
Microsoft Office Word에서 런타임에 콘텐츠 컨트롤에 적용하는 제한 사항은 대부분 디자인 타임에 적용되지 않습니다. Visual Studio에서 문서 수준 솔루션의 UI를 디자인하는 경우 런타임에 지원되는 방식으로만 콘텐츠 컨트롤을 수정해야 합니다.
런타임에 컨트롤이 지원하지 않는 방법으로 디자인 타임에 콘텐츠 컨트롤을 수정하는 경우 Visual Studio 디자이너에서 지원되지 않는 변경 내용을 경고하지 않습니다. 그러나 프로젝트를 디버그 또는 실행하거나 프로젝트를 저장한 후 다시 여는 경우 Word에서 오류 메시지를 표시하고 문서를 복구할 수 있는 권한을 요청합니다. 문서를 복구하면 컨트롤에서 지원되지 않는 콘텐츠 및 서식이 모두 제거됩니다.
예를 들어 Word에서 디자인 타임에 PlainTextContentControl에 표를 추가하지 못하도록 차단하지는 않습니다. 그러나 PlainTextContentControl 개체는 런타임에 표를 포함할 수 없으므로 Word에서 문서를 열 때 오류 메시지가 표시됩니다.
또한 콘텐츠 컨트롤의 동작을 정의하는 많은 속성은 디자인 타임에 영향을 주지 않습니다. 예를 들어 디자인 타임에 콘텐츠 컨트롤의 LockContents 속성을 True로 설정하는 경우 Visual Studio 디자이너에서 컨트롤의 텍스트를 계속 편집할 수 있습니다. 이 속성은 런타임에 사용자가 컨트롤을 편집하지 못하도록 하는 역할만 합니다.
이벤트 제한 사항
콘텐츠 컨트롤은 사용자가 컨트롤의 텍스트 또는 기타 항목을 변경할 때 발생하는 이벤트를 제공하지 않습니다. 예를 들어 사용자가 DropDownListContentControl 또는 ComboBoxContentControl에서 다른 항목을 선택할 때 발생하는 이벤트가 없습니다.
사용자가 콘텐츠 컨트롤의 내용을 편집하는 시기를 확인하기 위해 사용자 지정 XML 부분에 컨트롤을 바인딩한 다음 StoreUpdating 이벤트를 처리할 수 있습니다. 이 이벤트는 사용자가 사용자 지정 XML 부분에 바인딩된 컨트롤의 내용을 변경할 때 발생합니다. 사용자 지정 XML 부분에 콘텐츠 컨트롤을 바인딩하는 방법을 보여 주는 연습은 연습: 콘텐츠 컨트롤을 사용자 지정 XML 부분에 바인딩을 참조하세요.
Word 프로젝트의 확인란 콘텐츠 컨트롤
Word 2010에서는 확인란을 나타내는 새로운 형식의 콘텐츠 컨트롤이 도입되었습니다. 그러나 Visual Studio Tools for Office Runtime은 Office 프로젝트에서 사용할 수 있는 해당 CheckBoxContentControl 형식을 제공하지 않습니다. Word 2013 또는 Word 2010 프로젝트에서 확인란 콘텐츠 컨트롤을 만들려면 AddContentControl 메서드를 사용하여 ContentControl 개체를 만들고 wdContentControlCheckBox 값을 메서드에 전달하여 확인란 콘텐츠 컨트롤을 지정합니다. 다음 코드 예제에서는 이 작업을 수행하는 방법을 보여 줍니다.
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;