對 Windows Form 應用程式的雙向支援

您可以使用 Visual Studio 建立支援雙向 (由右向左) 語言 (例如阿拉伯文和希伯來文) 的 Windows 應用程式, 包括標準表單、對話方塊、MDI 表單以及所有可以在這些表單中使用的控制項,也就是 Control 命名空間中的所有物件。

文化特性支援

文化特性 (Culture) 和 UI 文化特性設定決定了應用程式使用日期、時間、貨幣和其他資訊的方式。 對於文化特性和 UI 文化特性的支援方式和雙向語言相同,也和其他任何語言相同。 如需詳細資訊,請參閱全域 Windows Form 和 Web Form 的文化特性特定類別全域 Windows Form 和 Web Form 的文化特性特定類別全域 Windows Form 和 Web Form 的文化特性特定類別全域 Windows Form 和 Web Form 的文化特性特定類別.

RightToLeft 和 RightToLeftLayout 屬性

可衍生出表單的 Control 基底類別含有一個 RightToLeft 屬性,您可以設定這個屬性以變更表單及其控制項的讀取順序。 如果設定了表單的 RightToLeft 屬性,表單上的控制項依預設會繼承這個設定。 然而,也可以在大多數的控制項上個別設定 RightToLeft 屬性。 如需詳細資訊,請參閱HOW TO:針對全球化在 Windows Form 中由右至左顯示文字HOW TO:針對全球化在 Windows Form 中由右至左顯示文字HOW TO:針對全球化在 Windows Form 中由右至左顯示文字HOW TO:針對全球化在 Windows Form 中由右至左顯示文字如何:針對全球化在 Windows Form 中由右至左顯示文字.

RightToLeft 屬性的作用可能因控制項而有所不同。 在某些控制項中,這個屬性只會設定讀取順序,例如 ButtonTreeViewToolTip 控制項。 在其他控制項中,RightToLeft 屬性會同時變更讀取順序和配置。 其中包括 RadioButtonComboBoxCheckBox 控制項。 其他控制項必須套用 RightToLeftLayout 屬性,才能將配置左右反轉。 下表提供 RightToLeftRightToLeftLayout 屬性對個別 Windows Form 控制項影響的詳細資訊。

控制項/元件

RightToLeft 屬性的作用

RightToLeftLayout 屬性的作用

是否需要左右反轉

Button

設定由右向左讀取順序。 反轉 TextAlignImageAlignTextImageRelation

沒有作用

CheckBox

核取方塊顯示在文字的右邊

沒有作用

CheckedListBox

所有核取方塊顯示在文字的右邊

沒有作用

ColorDialog

沒有作用;根據作業系統的語言而定

沒有作用

ComboBox

下拉式方塊中的項目為靠右對齊

沒有作用

ContextMenu

以由右向左讀取順序靠右對齊方式顯示

沒有作用

DataGrid

以由右向左讀取順序靠右對齊方式顯示

沒有作用

DataGridView

同時影響由右向左讀取順序和控制項配置

沒有作用

DateTimePicker

沒有作用;根據作業系統的語言而定

將控制項左右反轉

DomainUpDown

靠左對齊上下按鈕

沒有作用

ErrorProvider

不支援

沒有作用

FontDialog

依據作業系統的語言而定

沒有作用

Form

設定由右向左讀取順序並將捲軸反轉

將表單左右反轉

GroupBox

標題靠左對齊顯示。 子控制項可能繼承這個屬性

在控制項內使用 TableLayoutPanel 以取得由右向左的左右反轉支援

HScrollBar

從捲動方塊 (Thumb) 開始靠右對齊

沒有作用

ImageList

不需要

沒有作用

Label

靠右對齊顯示。 反轉 TextAlignImageAlign

沒有作用

LinkLabel

靠右對齊顯示。 反轉 TextAlignImageAlign

沒有作用

ListBox

項目靠右對齊

沒有作用

ListView

將讀取順序設為由右向左;項目保持靠左對齊

將控制項左右反轉

MainMenu

在執行階段時,以由右向左讀取順序靠右對齊方式顯示 (不是在設計階段)

沒有作用

MaskedTextBox

由右向左顯示文字。

沒有作用

MonthCalendar

沒有作用;根據作業系統的語言而定

將控制項左右反轉

NotifyIcon

不支援

不支援

NumericUpDown

上下拉按鈕是靠左對齊

沒有作用

OpenFileDialog

沒有作用;根據作業系統的語言而定

沒有作用

PageSetupDialog

沒有作用;根據作業系統的語言而定

沒有作用

Panel

子控制項可能會繼承這個屬性

在控制項內使用 TableLayoutPanel 以取得由右向左的支援

PictureBox

不支援

沒有作用

PrintDialog

沒有作用;根據作業系統的語言而定

沒有作用

PrintDocument

垂直捲軸變成靠左對齊,水平捲軸則從左邊開始

沒有作用

PrintPreviewDialog

不支援

不支援

ProgressBar

不受這個屬性影響

將控制項左右反轉

RadioButton

選項按鈕顯示在文字的右邊

沒有作用

RichTextBox

含有文字的控制項項目以由右向左的讀取順序從右向左顯示

沒有作用

SaveFileDialog

沒有作用;根據作業系統的語言而定

沒有作用

SplitContainer

將面板配置反轉,垂直捲軸顯示在左邊,水平捲軸則從右邊開始

使用 TableLayoutPanel 將子控制項的順序左右反轉

Splitter

不支援

沒有作用

StatusBar

不支援,改用 StatusStrip

沒有作用,改用 StatusStrip

TabControl

不受這個屬性影響

將控制項左右反轉

TextBox

以由右向左讀取順序從右到左顯示文字

沒有作用

Timer

不需要

不需要

ToolBar

不受這個屬性影響,改用 ToolStrip

沒有作用,改用 ToolStrip

ToolTip

設定由右向左讀取順序

沒有作用

TrackBar

捲軸或追蹤列從右邊開始;如果 Orientation 為垂直,則刻度從右邊開始標記

沒有作用

TreeView

只設定由右向左讀取順序

將控制項左右反轉

UserControl

垂直捲軸顯示在左邊,水平捲軸的捲動方塊在右邊

沒有直接支援,使用 TableLayoutPanel

VScrollBar

顯示在可捲動控制項的左邊,而非右邊

沒有作用

編碼方式

Windows Form 支援 Unicode,因此當您建立雙向應用程式時,可以包含任何字元集 (Character Set)。 然而,不是所有 Windows Form 控制項都支援所有平台上的 Unicode。 如需詳細資訊,請參閱編碼方式和 Windows Form 全球化

GDI+

您可使用 GDI+ 以從右至左的讀取順序繪製文字。 用來繪製文字的 DrawString 方法支援 StringFormat 參數,您可以將這個參數設定為 StringFormatFlags 列舉型別的 DirectionRightToLeft 成員,以便反轉文字的原點。

通用對話方塊

如 [開啟舊檔] 對話方塊的系統工具是由 Windows 所提供的。 這些系統工具從作業系統繼承語言項目。 如果您使用的 Windows 版本具有正確的語言設定,這些對話方塊就可以正常使用雙向語言。

同樣地,訊息方塊可以在整個作業系統中使用,並支援雙向文字。 訊息方塊按鈕上的標題是根據目前語言設定而來的。 根據預設,訊息方塊並不是使用由右向左的讀取順序,但是您可以指定參數來變更顯示訊息方塊時的讀取順序。 如需詳細資訊,請參閱 HOW TO:建立用於雙向 Windows Form 的訊息方塊

RightToLeft、Scrollbars 和 ScrollableControl

目前在 Windows Form 中具有一項限制,會在啟用 RightToLeft 以及將 AutoScroll 設定為 Yes 時,讓衍生自 ScrollableControl 的所有類別都無法適當運作。 例如,假設您在表單上放置了一個控制項 Panel (或是衍生自 Panel 的容器類別,例如 FlowLayoutPanelTableLayoutPanel)。 如果您將容器上的 AutoScroll 設為 Yes,然後將該容器內的一個或多個控制項的 Anchor 屬性設為 Right,那麼就不會出現任何捲軸。 衍生自 ScrollableControl 的類別會在假設 AutoScroll 設為 No 的情況下執行。

目前唯一的解決方法是以巢狀的方式將 ScrollableControl 放入另一個 ScrollableControl 內。 例如,如果您需要 TableLayoutPanel 在此狀況下運作,可以將其放置在 Panel 控制項的內部,並將 Panel 上的AutoScroll 設定為 Yes

左右反轉

「左右反轉」(Mirroring) 是指反轉 UI 項目的配置,這樣就能使其從右流向左。 例如,在以左右反轉呈現的 Windows Form 中,[最小化]、[最大化] 和 [關閉] 按鈕出現在標題列的最左邊,而不是最右邊。

將表單或控制項的 RightToLeft 屬性設定為 true 就會反轉表單上各項目的讀取順序,但是這項設定並不會將配置反轉為由右向左,也就是說,它並不會造成左右反轉的效果。 例如,設定這個屬性並不會將表單標題列中的 [最小化]、[最大化] 和 [關閉] 按鈕移到表單的左邊。 同樣地,某些控制項 (例如 TreeView 控制項) 就需要左右反轉,以便將其顯示變更為適用於阿拉伯文或希伯來文。 設定 RightToLeftLayout 屬性就可以將這些控制項左右反轉。

下列控制項可以建立左右反轉的版本:

有些控制項已密封, 因此,您無法從中衍生新的控制項, 其中包括 ImageListProgressBar 控制項。

請參閱

概念

ASP.NET Web 應用程式的雙向支援

其他資源

全球化 Windows Form