다음을 통해 공유


Office 문서에서 Windows Forms 컨트롤의 제한 사항

Microsoft Office Word 문서 또는 Microsoft Office Excel 통합 문서에 추가되는 Windows Forms 컨트롤과 Windows Forms에 추가되는 Windows Forms 컨트롤에는 몇 가지 차이점이 있습니다. 예를 들어 문서에 Button 컨트롤을 추가하면 Dock, AnchorTabIndex와 같은 속성이 예상한 대로 작동하지 않을 수 있습니다.

이러한 차이점은 대부분 Windows Forms 컨트롤이 문서에서 호스트되는 방식으로 인해 발생합니다. Windows Forms 컨트롤을 문서에 추가하면 Visual Studio Tools for Office 런타임이 ActiveX 컨트롤을 포함하여 문서에서 Windows Forms 컨트롤을 호스트합니다. Windows Forms 컨트롤은 문서에 직접 포함되지 않습니다.

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

Windows Forms 컨트롤의 메서드 및 속성의 제한 사항

Windows Forms 컨트롤의 많은 메서드 및 속성이 문서에서는 Windows Form과 동일하게 작동하지 않기 때문에 이를 사용하지 않는 것이 좋습니다. 예를 들어 DockAnchor와 같은 속성을 설정하면 해당 문서가 아닌 컨테이너 ActiveX 컨트롤과 관련된 컨트롤 위치에만 영향을 줍니다. 다음은 Word 및 Excel에 대해 지원되지 않는 Windows Forms 컨트롤의 메서드 및 속성 목록입니다.

또한 Word 문서의 텍스트와 일치하는 Windows Forms 컨트롤의 Left 또는 Top 속성을 설정할 수 없습니다. Windows Forms 컨트롤은 다음과 같은 경우에 텍스트에 따라 추가됩니다.

  • 프로그래밍 방식으로 Word 문서에 컨트롤을 추가하고 위치 범위를 지정하는 메서드를 사용합니다.

  • Windows Forms 컨트롤을 디자인 타임에 Word 문서에 추가합니다. 디자이너에서 컨트롤을 수정하여 이를 변경할 수 있습니다.

Office 문서에서 Windows Forms 컨트롤의 차이점

Windows Forms 컨트롤은 일반적으로 Windows Forms와 비슷하게 Office 문서에서도 동일하게 동작하지만 일부 차이점이 존재합니다. 다음 표에서는 Office 문서에서 Windows Forms 컨트롤에 존재하는 차이점을 설명합니다.

기능 다름
컨트롤 탭 순서 Excel 워크시트 또는 Word 문서에 배치된 컨트롤을 탭으로 이동할 수 없습니다.
컨트롤 그룹화 GroupBox 컨트롤을 사용하여 Office 문서에 다른 컨트롤을 포함할 수 없습니다. 문서에 직접 여러 라디오 단추를 추가할 때 라디오 단추는 서로 배타적이지 않습니다. 라디오 단추를 서로 배타적으로 만드는 코드를 작성할 수 있지만, 사용자 컨트롤에 라디오 단추를 추가한 다음, 사용자 컨트롤을 문서에 추가하는 것이 더 좋습니다. 자세한 내용은 Office 개발 샘플 및 연습에서 Word 컨트롤 샘플 또는 Excel 컨트롤 샘플을 참조하세요.
컨트롤 형식 문서에 사용된 Windows Forms 컨트롤은 Excel 워크시트 또는 Word 문서와 관련된 추가 기능을 컨트롤에 부여하는 Visual Studio Tools for Office 런타임에서 제공된 클래스에 래핑됩니다. 예를 들어 Excel 워크시트에 Button 컨트롤이 있으면 개체를 참조하거나 캐스팅할 때 Button 대신 Button으로 형식을 지정해야 합니다.
컨트롤 위치 및 크기 컨트롤의 크기 및 위치는 컨테이너 ActiveX 컨트롤에 포함된 속성에 따라 결정됩니다. ActiveX 컨트롤 속성은 Windows Forms 컨트롤의 해당 속성과 다른 값을 갖습니다. 컨트롤의 Top, Left, Height 또는 Width 속성을 설정하면 픽셀이 아닌 포인트로 측정됩니다.
Word 문서의 컨트롤 위치 흐름 기반 레이아웃에 컨트롤을 추가할 경우에는 컨트롤이 콘텐츠 변화에 따라 콘텐츠와 함께 이동한다는 것에 주의해야 합니다. 컨트롤이 텍스트에 맞춰 Word 문서에 추가되기 때문에 도구 상자에서 끌어올 때 컨트롤을 단락에 고정할 수 없습니다. 컨트롤을 두 번 클릭할 때와 같이 다른 방법을 사용하여 컨트롤을 추가하면 그림 삽입에 대해 설정한 Word 옵션에 따라 컨트롤이 삽입됩니다.

텍스트에 맞게 배치되는 컨트롤의 Left 또는 Top 속성을 설정할 수 없습니다.

머리글이나 바닥글에 또는 하위 문서 내에 컨트롤을 배치할 수 없습니다.
컨트롤 이벤트 컨트롤을 선택하면 다음 순서로 이벤트가 발생합니다.

1. Enter
2. GotFocus

컨트롤을 선택 해제하면 다음 순서로 이벤트가 발생합니다.

1. Leave
2. Validating
3. Validated
4. LostFocus
컨트롤 크기 조정 문서의 확대/축소 설정을 100% 이외의 값으로 변경하면 문서와 함께 크기 조정되는 것으로 보이더라도 컨트롤을 사용할 수 없게 됩니다. 예를 들어 문서의 확대/축소 수준이 130%일 때 단추를 클릭하면 확대/축소를 100%로 설정할 때까지 컨트롤을 사용할 수 없다는 메시지가 표시됩니다. 확대/축소를 100%로 변경하면 컨트롤이 올바르게 작동합니다.
컨트롤 속성 값 Windows Form에서 컨트롤의 속성이 정수 값으로 설정되더라도 Word 문서의 컨트롤은 single로 설정됩니다. Excel에서는 컨트롤의 속성 값이 double로 설정됩니다. 워크시트에서 컨트롤의 HeightWidth 속성이 워크시트 또는 화면 크기를 초과할 경우 값이 잘립니다.
컨트롤 크기 조정 8개의 크기 조정 핸들 중 하나를 사용하여 문서에서 컨트롤 크기를 조정하는 경우 컨트롤을 다시 선택할 때까지 새로운 컨트롤 크기가 속성 창에 반영되지 않습니다.
컨트롤 동작 워크시트 창이 분할된 경우 Excel 워크시트의 컨트롤이 예측 불가능하게 동작할 수 있습니다. 예를 들어 워크시트에서 TextBox에 대한 액세스는 창 중 하나에서만 사용할 수 있습니다.
컨트롤 이름 지정 예약어를 사용하여 컨트롤 이름을 지정할 수 없습니다. 예를 들어 워크시트에 Button을 추가하고 이름을 System으로 변경하면 프로젝트를 빌드할 때 오류가 발생합니다.
프로그래밍 방식으로 컨트롤 추가 컨트롤의 생성자를 사용하여 런타임에 문서에 컨트롤을 추가하지 마세요. 대신 Visual Studio Tools for Office 런타임에서 제공되는 도우미 메서드를 사용해야 합니다. 예를 들어 AddButton 메서드를 사용하여 워크시트에 단추를 추가합니다. 이러한 도우미 메서드에서 지원되지 않는 컨트롤을 추가하려면 AddControl 메서드를 사용할 수 있습니다. 자세한 내용은 런타임 시 Office 문서에 컨트롤 추가를 참조하세요.
컨트롤 복사 Windows Forms 컨트롤을 복사하여 런타임에 문서에 붙여넣으면 비어 있는 컨테이너 ActiveX 컨트롤을 문서에 붙여넣습니다. Windows Forms 컨트롤이 새 위치에 표시되지 않고 원본 컨트롤 뒤에 있는 코드가 컨테이너 ActiveX 컨트롤에 복사되지 않습니다.

문서 수준 프로젝트의 제한 사항

문서에서 Windows Forms 컨트롤을 사용할 때의 일부 제한 사항은 문서 수준 프로젝트에 고유합니다.

디자인 타임의 컨트롤 지원

Excel 워크시트 또는 Word 문서를 Visual Studio 디자이너에서 열면 일부 Windows Forms 컨트롤이 도구 상자에서 제거됩니다. 이것은 기술적인 제한 사항 또는 해당 기능이 이미 Word 또는 Excel 내에서 제공되기 때문입니다. Excel 및 Word 프로젝트는 모든 Windows Forms 컨트롤 그리고 문서에 포커스가 있을 때 도구 상자에 표시되는 다른 구성 요소를 지원합니다. 또한 타사 컨트롤을 워크시트 또는 문서에 추가할 수도 있습니다.

참고 항목

문서가 보호되는 경우 모든 컨트롤이 도구 상자에서 제거됩니다. 문서 보호에 대한 자세한 내용은 문서 수준 솔루션의 문서 보호를 참조하세요.

참고 항목

타사 컨트롤을 Office 솔루션에서 사용하려면 ComVisibleAttribute 특성을 true로 설정해야 합니다.

다음 컨트롤 및 구성 요소는 도구 상자에서 사용할 수 없습니다.

레거시 ActiveX 컨트롤 지원

ActiveX 컨트롤을 포함하는 기존 Word 문서 또는 Excel 통합 문서를 사용하는 문서 수준 Office 프로젝트를 만드는 경우 ActiveX 컨트롤 기능이 손실되지 않습니다. 그러나 Visual Studio 내에서 문서에 새 ActiveX 컨트롤을 추가하는 것이 지원되지 않습니다. 예를 들어 Word 문서에 VBA(Visual Basic for Applications) 매크로를 실행하는 컨트롤 도구 상자의 단추가 포함된 경우 문서가 Office 프로젝트에 사용된 후에도 계속 매크로를 실행합니다. 그러나 ActiveX 컨트롤 및 VBA 매크로를 제거하고 이를 Windows Forms 컨트롤 및 관리 코드로 바꾸는 것이 좋습니다.