Windows Forms 응용 프로그램에 대한 양방향 지원
Visual Studio를 사용하면 아랍어 및 히브리어와 같은 양방향(오른쪽에서 왼쪽) 언어를 지원하는 Windows 기반 응용 프로그램을 만들 수 있습니다. 여기에는 표준 폼, 대화 상자, MDI 폼 및 이러한 폼 안에서 사용할 수 있는 모든 컨트롤, 즉 Control 네임스페이스에 있는 모든 개체가 포함됩니다.
문화권 지원
응용 프로그램이 날짜, 시간, 통화 및 기타 정보에 대해 작동되는 방식은 문화권 및 UI 문화권 설정에 의해 결정됩니다. 양방향 언어에서 문화권 및 UI 문화권은 다른 언어의 경우와 동일한 방식으로 지원됩니다. 자세한 내용은 다음을 참조하십시오. 전역 Windows Forms 및 Web Forms을 위한 Culture 관련 클래스 및 전역 Windows Forms 및 Web Forms을 위한 문화권 관련 클래스 및 전역 Windows Forms 및 Web Forms을 위한 문화권 관련 클래스 및 전역 Windows Forms 및 Web Forms을 위한 문화권 관련 클래스.
RightToLeft 및 RightToLeftLayout 속성
폼이 파생되는 기본 Control 클래스에는 폼과 해당 폼에 포함된 컨트롤의 읽기 순서를 변경하기 위해 설정할 수 있는 RightToLeft 속성이 포함되어 있습니다. 폼의 RightToLeft 속성을 설정하면 기본적으로 해당 폼에 포함된 컨트롤은 이 설정을 상속합니다. 그러나 대부분의 컨트롤에서 RightToLeft 속성을 개별적으로 설정할 수도 있습니다. 자세한 내용은 다음을 참조하십시오. 방법: 전역화를 위해 Windows Forms에서 오른쪽에서 왼쪽으로 텍스트 표시 및 방법: 전역화를 위해 Windows Forms에서 오른쪽에서 왼쪽으로 텍스트 표시 및 방법: 전역화를 위해 Windows Forms에서 오른쪽에서 왼쪽으로 텍스트 표시 및 방법: 전역화를 위해 Windows Forms에서 오른쪽에서 왼쪽으로 텍스트 표시 및 방법: 전역화를 위해 Windows Forms에서 오른쪽에서 왼쪽으로 텍스트 표시.
RightToLeft 속성의 효과는 컨트롤마다 서로 다를 수 있습니다. Button, TreeView 및 ToolTip 컨트롤과 같은 일부 컨트롤에서는 속성이 읽기 순서만 설정합니다. 다른 컨트롤에서 RightToLeft 속성을 설정하면 읽기 순서 및 레이아웃이 모두 변경됩니다. 이러한 컨트롤로는 RadioButton, ComboBox 및 CheckBox 컨트롤이 있습니다. 다른 컨트롤에서는 레이아웃이 오른쪽에서 왼쪽으로 미러링되도록 RightToLeftLayout 속성이 적용되어야 합니다. 다음 표에서는 RightToLeft 및 RightToLeftLayout 속성이 개별 Windows Forms 컨트롤에 미치는 효과를 자세하게 보여 줍니다.
컨트롤/구성 요소 |
RightToLeft 속성의 효과 |
RightToLeftLayout 속성의 효과 |
미러링 필요 여부 |
---|---|---|---|
RTL 읽기 순서를 설정합니다. TextAlign, ImageAlign 및 TextImageRelation을 반대로 바꿉니다. |
효과가 없습니다. |
아니요 |
|
확인란이 텍스트의 오른쪽에 표시됩니다. |
효과가 없습니다. |
아니요 |
|
모든 확인란이 텍스트의 오른쪽에 표시됩니다. |
효과가 없습니다. |
아니요 |
|
아무 효과도 없습니다. 운영 체제의 언어에 따라 다릅니다. |
효과가 없습니다. |
아니요 |
|
콤보 상자 컨트롤의 항목이 오른쪽으로 정렬됩니다. |
효과가 없습니다. |
아니요 |
|
RTL 읽기 순서가 적용되고 오른쪽으로 정렬되어 표시됩니다. |
효과가 없습니다. |
아니요 |
|
RTL 읽기 순서가 적용되고 오른쪽으로 정렬되어 표시됩니다. |
효과가 없습니다. |
아니요 |
|
RTL 읽기 순서와 컨트롤 레이아웃 모두에 영향을 줍니다. |
효과가 없습니다. |
아니요 |
|
아무 효과도 없습니다. 운영 체제의 언어에 따라 다릅니다. |
컨트롤을 미러링합니다. |
예 |
|
위로 및 아래로 단추를 왼쪽으로 정렬합니다. |
효과가 없습니다. |
아니요 |
|
지원 안 함 |
효과가 없습니다. |
아니요 |
|
운영 체제의 언어에 따라 다릅니다. |
효과가 없습니다. |
아니요 |
|
RTL 읽기 순서를 설정하고 스크롤 막대를 반대로 바꿉니다. |
폼을 미러링합니다. |
예 |
|
캡션이 오른쪽으로 정렬되어 표시됩니다. 자식 컨트롤에서 이 속성을 상속할 수 있습니다. |
오른쪽에서 왼쪽으로 미러링을 지원하기 위해 컨트롤에서 TableLayoutPanel을 사용합니다. |
아니요 |
|
스크롤 상자(엄지 단추)가 오른쪽으로 정렬된 상태에서 시작됩니다. |
효과가 없습니다. |
아니요 |
|
필요하지 않습니다. |
효과가 없습니다. |
아니요 |
|
오른쪽으로 정렬되어 표시됩니다. TextAlign 및 ImageAlign을 반대로 바꿉니다. |
효과가 없습니다. |
아니요 |
|
오른쪽으로 정렬되어 표시됩니다. TextAlign 및 ImageAlign을 반대로 바꿉니다. |
효과가 없습니다. |
아니요 |
|
항목이 오른쪽으로 정렬됩니다. |
효과가 없습니다. |
아니요 |
|
읽기 순서가 RTL로 설정됩니다. 요소는 왼쪽으로 정렬된 상태를 유지합니다. |
컨트롤을 미러링합니다. |
예 |
|
디자인 타임이 아닌 런타임에 RTL 읽기 순서가 적용되고 오른쪽으로 정렬되어 표시됩니다. |
효과가 없습니다. |
아니요 |
|
텍스트를 오른쪽에서 왼쪽으로 표시합니다. |
효과가 없습니다. |
아니요 |
|
아무 효과도 없습니다. 운영 체제의 언어에 따라 다릅니다. |
컨트롤을 미러링합니다. |
예 |
|
지원 안 함 |
지원 안 함 |
아니요 |
|
위로 및 아래로 단추가 왼쪽으로 정렬됩니다. |
효과가 없습니다. |
아니요 |
|
아무 효과도 없습니다. 운영 체제의 언어에 따라 다릅니다. |
효과가 없습니다. |
아니요 |
|
아무 효과도 없습니다. 운영 체제의 언어에 따라 다릅니다. |
효과가 없습니다. |
아니요 |
|
자식 컨트롤에서 이 속성을 상속할 수 있습니다. |
오른쪽에서 왼쪽으로 지원하기 위해 컨트롤에서 TableLayoutPanel을 사용합니다. |
예 |
|
지원 안 함 |
효과가 없습니다. |
아니요 |
|
아무 효과도 없습니다. 운영 체제의 언어에 따라 다릅니다. |
효과가 없습니다. |
아니요 |
|
세로 스크롤 막대는 왼쪽으로 정렬되고 가로 스크롤 막대는 왼쪽에서 시작됩니다. |
효과가 없습니다. |
아니요 |
|
지원 안 함 |
지원 안 함 |
아니요 |
|
아무 효과도 없습니다. |
컨트롤을 미러링합니다. |
예 |
|
라디오 단추가 텍스트의 오른쪽에 표시됩니다. |
효과가 없습니다. |
아니요 |
|
텍스트를 포함한 컨트롤 요소가 RTL 읽기 순서가 적용된 상태에서 오른쪽에서 왼쪽으로 표시됩니다. |
효과가 없습니다. |
아니요 |
|
아무 효과도 없습니다. 운영 체제의 언어에 따라 다릅니다. |
효과가 없습니다. |
아니요 |
|
패널 레이아웃이 반대로 바뀝니다. 세로 스크롤 막대가 왼쪽에 표시되고 가로 스크롤 막대가 오른쪽에서 시작합니다. |
TableLayoutPanel을 사용하여 자식 컨트롤의 순서를 미러링합니다. |
아니요 |
|
지원 안 함 |
효과가 없습니다. |
아니요 |
|
지원되지 않습니다. 대신 StatusStrip을 사용하십시오. |
효과가 없습니다. 대신 StatusStrip을 사용하십시오. |
아니요 |
|
아무 효과도 없습니다. |
컨트롤을 미러링합니다. |
예 |
|
텍스트가 RTL 읽기 순서가 적용된 상태에서 오른쪽에서 왼쪽으로 표시됩니다. |
효과가 없습니다. |
아니요 |
|
필요하지 않습니다. |
필요하지 않습니다. |
아니요 |
|
이 속성에 의해 영향을 받지 않습니다. 대신 ToolStrip을 사용하십시오. |
효과가 없습니다. 대신 ToolStrip을 사용하십시오. |
예 |
|
RTL 읽기 순서로 설정됩니다. |
효과가 없습니다. |
아니요 |
|
스크롤 또는 추적이 오른쪽에서 시작합니다. Orientation이 세로 방향이면 눈금이 오른쪽에서 시작합니다. |
효과가 없습니다. |
아니요 |
|
RTL 읽기 순서로만 설정됩니다. |
컨트롤을 미러링합니다. |
예 |
|
세로 스크롤 막대가 왼쪽에 표시되고 가로 스크롤 막대의 엄지 단추가 오른쪽에 나타납니다. |
직접 지원되지 않습니다. TableLayoutPanel을 사용하십시오. |
아니요 |
|
스크롤 가능한 컨트롤의 오른쪽이 아닌 왼쪽에 표시됩니다. |
효과가 없습니다. |
아니요 |
인코딩
Windows Forms에서는 유니코드가 지원되므로 양방향 응용 프로그램을 만들 때 모든 문자 집합을 포함할 수 있습니다. 그러나 모든 Windows Forms 컨트롤에서 모든 플랫폼에 대해 유니코드가 지원되는 것은 아닙니다. 자세한 내용은인코딩 및 Windows Forms 전역화를 참조하십시오.
GDI+
GDI+를 사용하면 오른쪽에서 왼쪽 읽기 순서로 텍스트를 그릴 수 있습니다. 텍스트를 그릴 때 사용되는 DrawString 메서드는 StringFormat 매개 변수를 지원하는데, 이 매개 변수를 StringFormatFlags 열거형의 DirectionRightToLeft 멤버로 설정하면 텍스트의 시작점을 반대로 만들 수 있습니다.
일반적인 대화 상자
파일 열기 대화 상자 등의 시스템 도구는 Windows의 제어를 받습니다. 이들 시스템 도구는 운영 체제로부터 언어 요소를 상속 받습니다. 언어가 올바르게 설정된 Windows 버전을 사용하면 이 대화 상자가 양방향 언어에 대해 제대로 동작합니다.
이와 유사하게 메시지 상자도 운영 체제의 영향을 받으며 양방향 텍스트를 지원합니다. 메시지 상자 단추의 캡션은 현재의 언어 설정을 기반으로 합니다. 기본적으로 메시지 상자에서는 오른쪽에서 왼쪽으로 읽기 순서가 사용되지 않지만 매개 변수를 지정하면 메시지 상자가 표시될 때 읽기 순서를 변경할 수 있습니다. 자세한 내용은 방법: 양방향 Windows Forms용 메시지 상자 만들기를 참조하십시오.
RightToLeft, Scrollbars 및 ScrollableControl
현재 Windows Forms에는 RightToLeft를 사용하도록 설정되고 AutoScroll을 Yes로 설정한 경우 ScrollableControl에서 파생된 모든 클래스가 제대로 작동하지 못하게 하는 제한이 있습니다. 예를 들어, Panel 등의 컨트롤이나 Panel에서 파생된 FlowLayoutPanel 또는 TableLayoutPanel 등의 컨테이너 클래스를 폼에 배치하는 경우 컨테이너의 AutoScroll을 Yes로 설정한 다음 컨테이너 내부에 있는 컨트롤의 Anchor 속성을 하나 이상 Right로 설정하면 스크롤 막대가 나타나지 않습니다. ScrollableControl에서 파생된 클래스는 AutoScroll이 No로 설정된 것처럼 작동합니다.
현재 유일한 해결 방법은 다른 ScrollableControl 내에 ScrollableControl을 중첩하는 것입니다. 예를 들어, 이와 같은 경우에 TableLayoutPanel을 사용할 수 있어야 하면 이 컨트롤을 Panel 컨트롤 안에 배치하고 Panel의 AutoScroll을 Yes로 설정합니다.
미러링
미러링이란 UI 요소 레이아웃의 방향을 오른쪽에서 왼쪽으로 흐르도록 반전하는 것을 의미합니다. 예를 들어, 미러링된 Windows Form에서는 최소화, 최대화 및 닫기 단추가 제목 표시줄의 맨 오른쪽이 아닌 맨 왼쪽에 표시됩니다.
폼 또는 컨트롤의 RightToLeft 속성을 true로 설정하면 폼에 있는 요소의 읽기 순서가 반대로 바뀌지만 레이아웃이 오른쪽에서 왼쪽으로 바뀌지는 않습니다. 즉, 미러링이 발생하지 않습니다. 예를 들어, 이 속성을 설정해도 폼의 제목 표시줄에 있는 최소화, 최대화 및 닫기 단추가 폼의 왼쪽으로 이동하지 않습니다. 이와 유사하게 TreeView 컨트롤과 같은 일부 컨트롤에서 아랍어 또는 히브리어에 맞게 표시를 변경하기 위해서는 미러링이 필요합니다. RightToLeftLayout 속성을 설정하여 이러한 컨트롤을 미러링할 수 있습니다.
다음 컨트롤의 경우 미러링된 버전을 만들 수 있습니다.
일부 컨트롤은 sealed이므로 해당 컨트롤에서 새 컨트롤을 파생할 수 없습니다. ImageList 및 ProgressBar 컨트롤이 여기에 해당합니다.