다음을 통해 공유


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, TreeViewToolTip 컨트롤과 같은 일부 컨트롤에서는 속성이 읽기 순서만 설정합니다. 다른 컨트롤에서 RightToLeft 속성을 설정하면 읽기 순서 및 레이아웃이 모두 변경됩니다. 이러한 컨트롤로는 RadioButton, ComboBoxCheckBox 컨트롤이 있습니다. 다른 컨트롤에서는 레이아웃이 오른쪽에서 왼쪽으로 미러링되도록 RightToLeftLayout 속성이 적용되어야 합니다. 다음 표에서는 RightToLeftRightToLeftLayout 속성이 개별 Windows Forms 컨트롤에 미치는 효과를 자세하게 보여 줍니다.

컨트롤/구성 요소

RightToLeft 속성의 효과

RightToLeftLayout 속성의 효과

미러링 필요 여부

Button

RTL 읽기 순서를 설정합니다. TextAlign, ImageAlignTextImageRelation을 반대로 바꿉니다.

효과가 없습니다.

아니요

CheckBox

확인란이 텍스트의 오른쪽에 표시됩니다.

효과가 없습니다.

아니요

CheckedListBox

모든 확인란이 텍스트의 오른쪽에 표시됩니다.

효과가 없습니다.

아니요

ColorDialog

아무 효과도 없습니다. 운영 체제의 언어에 따라 다릅니다.

효과가 없습니다.

아니요

ComboBox

콤보 상자 컨트롤의 항목이 오른쪽으로 정렬됩니다.

효과가 없습니다.

아니요

ContextMenu

RTL 읽기 순서가 적용되고 오른쪽으로 정렬되어 표시됩니다.

효과가 없습니다.

아니요

DataGrid

RTL 읽기 순서가 적용되고 오른쪽으로 정렬되어 표시됩니다.

효과가 없습니다.

아니요

DataGridView

RTL 읽기 순서와 컨트롤 레이아웃 모두에 영향을 줍니다.

효과가 없습니다.

아니요

DateTimePicker

아무 효과도 없습니다. 운영 체제의 언어에 따라 다릅니다.

컨트롤을 미러링합니다.

DomainUpDown

위로 및 아래로 단추를 왼쪽으로 정렬합니다.

효과가 없습니다.

아니요

ErrorProvider

지원 안 함

효과가 없습니다.

아니요

FontDialog

운영 체제의 언어에 따라 다릅니다.

효과가 없습니다.

아니요

Form

RTL 읽기 순서를 설정하고 스크롤 막대를 반대로 바꿉니다.

폼을 미러링합니다.

GroupBox

캡션이 오른쪽으로 정렬되어 표시됩니다. 자식 컨트롤에서 이 속성을 상속할 수 있습니다.

오른쪽에서 왼쪽으로 미러링을 지원하기 위해 컨트롤에서 TableLayoutPanel을 사용합니다.

아니요

HScrollBar

스크롤 상자(엄지 단추)가 오른쪽으로 정렬된 상태에서 시작됩니다.

효과가 없습니다.

아니요

ImageList

필요하지 않습니다.

효과가 없습니다.

아니요

Label

오른쪽으로 정렬되어 표시됩니다. TextAlignImageAlign을 반대로 바꿉니다.

효과가 없습니다.

아니요

LinkLabel

오른쪽으로 정렬되어 표시됩니다. TextAlignImageAlign을 반대로 바꿉니다.

효과가 없습니다.

아니요

ListBox

항목이 오른쪽으로 정렬됩니다.

효과가 없습니다.

아니요

ListView

읽기 순서가 RTL로 설정됩니다. 요소는 왼쪽으로 정렬된 상태를 유지합니다.

컨트롤을 미러링합니다.

MainMenu

디자인 타임이 아닌 런타임에 RTL 읽기 순서가 적용되고 오른쪽으로 정렬되어 표시됩니다.

효과가 없습니다.

아니요

MaskedTextBox

텍스트를 오른쪽에서 왼쪽으로 표시합니다.

효과가 없습니다.

아니요

MonthCalendar

아무 효과도 없습니다. 운영 체제의 언어에 따라 다릅니다.

컨트롤을 미러링합니다.

NotifyIcon

지원 안 함

지원 안 함

아니요

NumericUpDown

위로 및 아래로 단추가 왼쪽으로 정렬됩니다.

효과가 없습니다.

아니요

OpenFileDialog

아무 효과도 없습니다. 운영 체제의 언어에 따라 다릅니다.

효과가 없습니다.

아니요

PageSetupDialog

아무 효과도 없습니다. 운영 체제의 언어에 따라 다릅니다.

효과가 없습니다.

아니요

Panel

자식 컨트롤에서 이 속성을 상속할 수 있습니다.

오른쪽에서 왼쪽으로 지원하기 위해 컨트롤에서 TableLayoutPanel을 사용합니다.

PictureBox

지원 안 함

효과가 없습니다.

아니요

PrintDialog

아무 효과도 없습니다. 운영 체제의 언어에 따라 다릅니다.

효과가 없습니다.

아니요

PrintDocument

세로 스크롤 막대는 왼쪽으로 정렬되고 가로 스크롤 막대는 왼쪽에서 시작됩니다.

효과가 없습니다.

아니요

PrintPreviewDialog

지원 안 함

지원 안 함

아니요

ProgressBar

아무 효과도 없습니다.

컨트롤을 미러링합니다.

RadioButton

라디오 단추가 텍스트의 오른쪽에 표시됩니다.

효과가 없습니다.

아니요

RichTextBox

텍스트를 포함한 컨트롤 요소가 RTL 읽기 순서가 적용된 상태에서 오른쪽에서 왼쪽으로 표시됩니다.

효과가 없습니다.

아니요

SaveFileDialog

아무 효과도 없습니다. 운영 체제의 언어에 따라 다릅니다.

효과가 없습니다.

아니요

SplitContainer

패널 레이아웃이 반대로 바뀝니다. 세로 스크롤 막대가 왼쪽에 표시되고 가로 스크롤 막대가 오른쪽에서 시작합니다.

TableLayoutPanel을 사용하여 자식 컨트롤의 순서를 미러링합니다.

아니요

Splitter

지원 안 함

효과가 없습니다.

아니요

StatusBar

지원되지 않습니다. 대신 StatusStrip을 사용하십시오.

효과가 없습니다. 대신 StatusStrip을 사용하십시오.

아니요

TabControl

아무 효과도 없습니다.

컨트롤을 미러링합니다.

TextBox

텍스트가 RTL 읽기 순서가 적용된 상태에서 오른쪽에서 왼쪽으로 표시됩니다.

효과가 없습니다.

아니요

Timer

필요하지 않습니다.

필요하지 않습니다.

아니요

ToolBar

이 속성에 의해 영향을 받지 않습니다. 대신 ToolStrip을 사용하십시오.

효과가 없습니다. 대신 ToolStrip을 사용하십시오.

ToolTip

RTL 읽기 순서로 설정됩니다.

효과가 없습니다.

아니요

TrackBar

스크롤 또는 추적이 오른쪽에서 시작합니다. Orientation이 세로 방향이면 눈금이 오른쪽에서 시작합니다.

효과가 없습니다.

아니요

TreeView

RTL 읽기 순서로만 설정됩니다.

컨트롤을 미러링합니다.

UserControl

세로 스크롤 막대가 왼쪽에 표시되고 가로 스크롤 막대의 엄지 단추가 오른쪽에 나타납니다.

직접 지원되지 않습니다. TableLayoutPanel을 사용하십시오.

아니요

VScrollBar

스크롤 가능한 컨트롤의 오른쪽이 아닌 왼쪽에 표시됩니다.

효과가 없습니다.

아니요

인코딩

Windows Forms에서는 유니코드가 지원되므로 양방향 응용 프로그램을 만들 때 모든 문자 집합을 포함할 수 있습니다. 그러나 모든 Windows Forms 컨트롤에서 모든 플랫폼에 대해 유니코드가 지원되는 것은 아닙니다. 자세한 내용은인코딩 및 Windows Forms 전역화를 참조하십시오.

GDI+

GDI+를 사용하면 오른쪽에서 왼쪽 읽기 순서로 텍스트를 그릴 수 있습니다. 텍스트를 그릴 때 사용되는 DrawString 메서드는 StringFormat 매개 변수를 지원하는데, 이 매개 변수를 StringFormatFlags 열거형의 DirectionRightToLeft 멤버로 설정하면 텍스트의 시작점을 반대로 만들 수 있습니다.

일반적인 대화 상자

파일 열기 대화 상자 등의 시스템 도구는 Windows의 제어를 받습니다. 이들 시스템 도구는 운영 체제로부터 언어 요소를 상속 받습니다. 언어가 올바르게 설정된 Windows 버전을 사용하면 이 대화 상자가 양방향 언어에 대해 제대로 동작합니다.

이와 유사하게 메시지 상자도 운영 체제의 영향을 받으며 양방향 텍스트를 지원합니다. 메시지 상자 단추의 캡션은 현재의 언어 설정을 기반으로 합니다. 기본적으로 메시지 상자에서는 오른쪽에서 왼쪽으로 읽기 순서가 사용되지 않지만 매개 변수를 지정하면 메시지 상자가 표시될 때 읽기 순서를 변경할 수 있습니다. 자세한 내용은 방법: 양방향 Windows Forms용 메시지 상자 만들기를 참조하십시오.

RightToLeft, Scrollbars 및 ScrollableControl

현재 Windows Forms에는 RightToLeft를 사용하도록 설정되고 AutoScrollYes로 설정한 경우 ScrollableControl에서 파생된 모든 클래스가 제대로 작동하지 못하게 하는 제한이 있습니다. 예를 들어, Panel 등의 컨트롤이나 Panel에서 파생된 FlowLayoutPanel 또는 TableLayoutPanel 등의 컨테이너 클래스를 폼에 배치하는 경우 컨테이너의 AutoScrollYes로 설정한 다음 컨테이너 내부에 있는 컨트롤의 Anchor 속성을 하나 이상 Right로 설정하면 스크롤 막대가 나타나지 않습니다. ScrollableControl에서 파생된 클래스는 AutoScrollNo로 설정된 것처럼 작동합니다.

현재 유일한 해결 방법은 다른 ScrollableControl 내에 ScrollableControl을 중첩하는 것입니다. 예를 들어, 이와 같은 경우에 TableLayoutPanel을 사용할 수 있어야 하면 이 컨트롤을 Panel 컨트롤 안에 배치하고 PanelAutoScrollYes로 설정합니다.

미러링

미러링이란 UI 요소 레이아웃의 방향을 오른쪽에서 왼쪽으로 흐르도록 반전하는 것을 의미합니다. 예를 들어, 미러링된 Windows Form에서는 최소화, 최대화 및 닫기 단추가 제목 표시줄의 맨 오른쪽이 아닌 맨 왼쪽에 표시됩니다.

폼 또는 컨트롤의 RightToLeft 속성을 true로 설정하면 폼에 있는 요소의 읽기 순서가 반대로 바뀌지만 레이아웃이 오른쪽에서 왼쪽으로 바뀌지는 않습니다. 즉, 미러링이 발생하지 않습니다. 예를 들어, 이 속성을 설정해도 폼의 제목 표시줄에 있는 최소화, 최대화닫기 단추가 폼의 왼쪽으로 이동하지 않습니다. 이와 유사하게 TreeView 컨트롤과 같은 일부 컨트롤에서 아랍어 또는 히브리어에 맞게 표시를 변경하기 위해서는 미러링이 필요합니다. RightToLeftLayout 속성을 설정하여 이러한 컨트롤을 미러링할 수 있습니다.

다음 컨트롤의 경우 미러링된 버전을 만들 수 있습니다.

일부 컨트롤은 sealed이므로 해당 컨트롤에서 새 컨트롤을 파생할 수 없습니다. ImageListProgressBar 컨트롤이 여기에 해당합니다.

참고 항목

개념

ASP.NET 웹 응용 프로그램을 위한 양방향 지원

기타 리소스

Windows Forms 전역화