Windows Forms 애플리케이션에 대한 양방향 지원
Visual Studio를 사용하여 아랍어 및 히브리어와 같은 양방향(오른쪽에서 왼쪽) 언어를 지원하는 Windows 기반 애플리케이션을 만들 수 있습니다. 여기에는 표준 폼, 대화 상자, MDI 폼 및 이러한 폼에서 사용할 수 있는 모든 컨트롤(즉, Control 네임스페이스의 모든 개체)이 포함됩니다.
문화권 지원
문화권 및 UI 문화권 설정은 애플리케이션에서 날짜, 시간, 통화 및 기타 정보를 사용하는 방법을 결정합니다. 양방향 언어에 대한 문화권 및 UI 문화권 지원은 다른 언어의 경우와 동일합니다. 자세한 내용은 전역 Windows 양식 및 웹 양식에 대한 문화별 클래스를 참조하세요.
RightToLeft 및 RightToLeftLayout 속성
폼이 파생되는 기본 Control 클래스는 폼과 해당 컨트롤의 읽기 순서를 변경하기 위해 설정할 수 있는 RightToLeft 속성을 포함합니다. 폼의 RightToLeft 속성을 설정하는 경우 기본적으로 폼의 컨트롤이 이 설정을 상속합니다. 그러나 대부분의 컨트롤에서 RightToLeft 속성을 개별적으로 설정할 수도 있습니다. 방법: 전역화를 위해 Windows Forms에서 오른쪽에서 왼쪽으로 텍스트 표시를 참조하세요.
RightToLeft 속성의 효과는 컨트롤마다 다를 수 있습니다. 일부 컨트롤에서는 속성이 Button, TreeView 및 ToolTip 컨트롤과 같이 읽기 순서만 설정합니다. 다른 컨트롤에서는 RightToLeft 속성이 읽기 순서와 레이아웃을 둘 다 변경합니다. 여기에는 RadioButton, ComboBox 및 CheckBox 컨트롤이 포함됩니다. 다른 컨트롤에서는 레이아웃을 오른쪽에서 왼쪽으로 미러링하기 위해 RightToLeftLayout 속성을 적용해야 합니다. 다음 표에서는 RightToLeft 및 RightToLeftLayout 속성이 개별 Windows Forms 컨트롤에 미치는 영향에 대한 세부 정보를 제공합니다.
컨트롤/구성 요소 | RightToLeft 속성의 효과 | RightToLeftLayout 속성의 효과 | 미러링 필요 여부 |
---|---|---|---|
Button | RTL 읽기 순서를 설정합니다. TextAlign, ImageAlign 및 TextImageRelation을 반대로 바꿉니다. | 영향 없음 | No |
CheckBox | 확인란이 텍스트 오른쪽에 표시됩니다. | 영향 없음 | No |
CheckedListBox | 모든 확인란이 텍스트 오른쪽에 표시됩니다. | 영향 없음 | No |
ColorDialog | 영향을 받지 않습니다. 운영 체제의 언어에 따라 달라집니다. | 영향 없음 | No |
ComboBox | 콤보 상자 컨트롤의 항목이 오른쪽 맞춤됩니다. | 영향 없음 | No |
ContextMenu | RTL 읽기 순서로 오른쪽 맞춤됩니다. | 영향 없음 | No |
DataGrid | RTL 읽기 순서로 오른쪽 맞춤됩니다. | 영향 없음 | No |
DataGridView | RTL 읽기 순서와 컨트롤 레이아웃 둘 다에 영향을 줍니다. | 영향 없음 | No |
DateTimePicker | 영향을 받지 않습니다. 운영 체제의 언어에 따라 달라집니다. | 컨트롤을 미러링합니다. | 예 |
DomainUpDown | 위로 및 아래로 단추를 왼쪽 맞춤합니다. | 영향 없음 | No |
ErrorProvider | 지원되지 않음 | 영향 없음 | No |
FontDialog | 운영 체제의 언어에 따라 달라집니다. | 영향 없음 | No |
Form | RTL 읽기 순서를 설정하고 스크롤 막대를 반대로 바꿉니다. | 폼을 미러링합니다. | 예 |
GroupBox | 캡션이 오른쪽 맞춤으로 표시됩니다. 이 속성은 자식 컨트롤에 상속될 수 있습니다. | 오른쪽에서 왼쪽 미러링을 지원하려면 컨트롤 내에서 TableLayoutPanel을 사용합니다. | No |
HScrollBar | 스크롤 상자(thumb)를 오른쪽 맞춤하여 시작됩니다. | 영향 없음 | No |
ImageList | 필요 없음 | 영향 없음 | No |
Label | 오른쪽 맞춤으로 표시됩니다. TextAlign 및 ImageAlign을 반대로 바꿉니다. | 영향 없음 | No |
LinkLabel | 오른쪽 맞춤으로 표시됩니다. TextAlign 및 ImageAlign을 반대로 바꿉니다. | 영향 없음 | No |
ListBox | 항목이 오른쪽 맞춤됩니다. | 영향 없음 | No |
ListView | 읽기 순서를 RTL로 설정합니다. 요소가 왼쪽 맞춤으로 유지됩니다. | 컨트롤을 미러링합니다. | 예 |
MainMenu | 런타임(디자인 타임 아님)에 RTL 읽기 순서를 사용하여 오른쪽 맞춤으로 표시됩니다. | 영향 없음 | No |
MaskedTextBox | 텍스트를 오른쪽에서 왼쪽으로 표시합니다. | 영향 없음 | No |
MonthCalendar | 영향을 받지 않습니다. 운영 체제의 언어에 따라 달라집니다. | 컨트롤을 미러링합니다. | 예 |
NotifyIcon | 지원되지 않음 | 지원되지 않음 | No |
NumericUpDown | 위로 및 아래로 단추가 왼쪽 맞춤됩니다. | 영향 없음 | No |
OpenFileDialog | 오른쪽에서 왼쪽으로 쓰는 운영 체제에서 포함하는 양식의 RightToLeft 속성을 RightToLeft.Yes로 설정하면 대화 상자가 현지화됩니다. | 영향 없음 | No |
PageSetupDialog | 영향을 받지 않습니다. 운영 체제의 언어에 따라 달라집니다. | 영향 없음 | No |
Panel | 이 속성은 자식 컨트롤에 상속될 수 있습니다. | 오른쪽에서 왼쪽을 지원하려면 컨트롤 내에서 TableLayoutPanel을 사용합니다. | 예 |
PictureBox | 지원되지 않음 | 영향 없음 | No |
PrintDialog | 영향을 받지 않습니다. 운영 체제의 언어에 따라 달라집니다. | 영향 없음 | No |
PrintDocument | 세로 스크롤 막대는 왼쪽 맞춤되고 가로 스크롤 막대는 왼쪽에서 시작됩니다. | 영향 없음 | No |
PrintPreviewDialog | 지원되지 않음 | 지원되지 않음 | No |
ProgressBar | 이 속성의 영향을 받지 않습니다. | 컨트롤을 미러링합니다. | 예 |
RadioButton | 라디오 단추가 텍스트 오른쪽에 표시됩니다. | 영향 없음 | No |
RichTextBox | 텍스트를 포함하는 컨트롤 요소가 RTL 읽기 순서를 사용하여 오른쪽에서 왼쪽으로 표시됩니다. | 영향 없음 | No |
SaveFileDialog | 영향을 받지 않습니다. 운영 체제의 언어에 따라 달라집니다. | 영향 없음 | No |
SplitContainer | 패널 레이아웃이 반대로 바뀝니다. 세로 스크롤 막대는 왼쪽에 표시되고 가로 스크롤 막대는 오른쪽에서 시작됩니다. | TableLayoutPanel을 사용하여 자식 컨트롤의 순서를 미러링합니다. | No |
Splitter | 지원되지 않음 | 영향 없음 | No |
StatusBar | 지원되지 않습니다. 대신 StatusStrip을 사용합니다. | 효과가 없습니다. 대신 StatusStrip을 사용합니다. | No |
TabControl | 이 속성의 영향을 받지 않습니다. | 컨트롤을 미러링합니다. | 예 |
TextBox | RTL 읽기 순서를 사용하여 텍스트를 오른쪽에서 왼쪽으로 표시합니다. | 영향 없음 | No |
Timer | 필요 없음 | 필요 없음 | No |
ToolBar | 이 속성의 영향을 받지 않습니다. 대신 ToolStrip을 사용합니다. | 효과가 없습니다. 대신 StatusStrip을 사용합니다. | 예 |
ToolTip | RTL 읽기 순서를 설정합니다. | 영향 없음 | No |
TrackBar | 스크롤 또는 추적이 오른쪽에서 시작됩니다. Orientation이 세로이면 눈금이 오른쪽에서 발생합니다. | 영향 없음 | No |
TreeView | RTL 읽기 순서만 설정합니다. | 컨트롤을 미러링합니다. | 예 |
UserControl | 세로 스크롤 막대는 왼쪽에 표시되고 가로 스크롤 막대는 오른쪽에 thumb이 있습니다. | 직접 지원되지 않습니다. TableLayoutPanel을 사용합니다. | No |
VScrollBar | 스크롤 가능한 컨트롤의 오른쪽이 아닌 왼쪽에 표시됩니다. | 영향 없음 | No |
Encoding
Windows Forms는 유니코드를 지원하므로 양방향 애플리케이션을 만들 때 모든 문자 집합을 포함할 수 있습니다. 그러나 모든 Windows Forms 컨트롤이 모든 플랫폼에서 유니코드를 지원하는 것은 아닙니다.
GDI+
GDI+를 사용하여 오른쪽에서 왼쪽 읽기 순서로 텍스트를 그릴 수 있습니다. 텍스트를 그리는 데 사용되는 DrawString 메서드는 텍스트의 원점을 반대로 바꾸기 위해 StringFormatFlags 열거형의 DirectionRightToLeft 멤버로 설정할 수 있는 StringFormat
매개 변수를 지원합니다.
일반 대화 상자
파일 열기 대화 상자와 같은 시스템 도구는 Windows에 의해 제어됩니다. 이러한 도구는 운영 체제에서 언어 요소를 상속합니다. 올바른 언어 설정으로 Windows 버전을 사용하는 경우 이러한 대화 상자가 양방향 언어에서 제대로 작동합니다.
마찬가지로, 메시지 상자도 운영 체제를 통해 양방향 텍스트를 지원합니다. 메시지 상자 단추의 캡션은 현재 언어 설정을 기반으로 합니다. 기본적으로 메시지 상자는 오른쪽에서 왼쪽 읽기 순서를 사용하지 않지만 매개 변수를 지정하여 메시지 상자가 표시될 때 읽기 순서를 변경할 수 있습니다.
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 속성을 설정하여 이러한 컨트롤을 미러링할 수 있습니다.
다음과 같은 컨트롤의 미러링된 버전을 만들 수 있습니다.
일부 컨트롤은 봉인됩니다. 따라서 해당 컨트롤에서 새 컨트롤을 파생시킬 수 없습니다. 여기에는 ImageList 및 ProgressBar 컨트롤이 포함됩니다.
참고 항목
.NET Desktop feedback