對 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 屬性的作用可能因控制項而有所不同。 在某些控制項中,這個屬性只會設定讀取順序,例如 Button、TreeView 和 ToolTip 控制項。 在其他控制項中,RightToLeft 屬性會同時變更讀取順序和配置。 其中包括 RadioButton、ComboBox 和 CheckBox 控制項。 其他控制項必須套用 RightToLeftLayout 屬性,才能將配置左右反轉。 下表提供 RightToLeft 和 RightToLeftLayout 屬性對個別 Windows Form 控制項影響的詳細資訊。
控制項/元件 |
RightToLeft 屬性的作用 |
RightToLeftLayout 屬性的作用 |
是否需要左右反轉 |
---|---|---|---|
設定由右向左讀取順序。 反轉 TextAlign、ImageAlign 和 TextImageRelation |
沒有作用 |
否 |
|
核取方塊顯示在文字的右邊 |
沒有作用 |
否 |
|
所有核取方塊顯示在文字的右邊 |
沒有作用 |
否 |
|
沒有作用;根據作業系統的語言而定 |
沒有作用 |
否 |
|
下拉式方塊中的項目為靠右對齊 |
沒有作用 |
否 |
|
以由右向左讀取順序靠右對齊方式顯示 |
沒有作用 |
否 |
|
以由右向左讀取順序靠右對齊方式顯示 |
沒有作用 |
否 |
|
同時影響由右向左讀取順序和控制項配置 |
沒有作用 |
否 |
|
沒有作用;根據作業系統的語言而定 |
將控制項左右反轉 |
是 |
|
靠左對齊上下按鈕 |
沒有作用 |
否 |
|
不支援 |
沒有作用 |
否 |
|
依據作業系統的語言而定 |
沒有作用 |
否 |
|
設定由右向左讀取順序並將捲軸反轉 |
將表單左右反轉 |
是 |
|
標題靠左對齊顯示。 子控制項可能繼承這個屬性 |
在控制項內使用 TableLayoutPanel 以取得由右向左的左右反轉支援 |
否 |
|
從捲動方塊 (Thumb) 開始靠右對齊 |
沒有作用 |
否 |
|
不需要 |
沒有作用 |
否 |
|
靠右對齊顯示。 反轉 TextAlign 和 ImageAlign |
沒有作用 |
否 |
|
靠右對齊顯示。 反轉 TextAlign 和 ImageAlign |
沒有作用 |
否 |
|
項目靠右對齊 |
沒有作用 |
否 |
|
將讀取順序設為由右向左;項目保持靠左對齊 |
將控制項左右反轉 |
是 |
|
在執行階段時,以由右向左讀取順序靠右對齊方式顯示 (不是在設計階段) |
沒有作用 |
否 |
|
由右向左顯示文字。 |
沒有作用 |
否 |
|
沒有作用;根據作業系統的語言而定 |
將控制項左右反轉 |
是 |
|
不支援 |
不支援 |
否 |
|
上下拉按鈕是靠左對齊 |
沒有作用 |
否 |
|
沒有作用;根據作業系統的語言而定 |
沒有作用 |
否 |
|
沒有作用;根據作業系統的語言而定 |
沒有作用 |
否 |
|
子控制項可能會繼承這個屬性 |
在控制項內使用 TableLayoutPanel 以取得由右向左的支援 |
是 |
|
不支援 |
沒有作用 |
否 |
|
沒有作用;根據作業系統的語言而定 |
沒有作用 |
否 |
|
垂直捲軸變成靠左對齊,水平捲軸則從左邊開始 |
沒有作用 |
否 |
|
不支援 |
不支援 |
否 |
|
不受這個屬性影響 |
將控制項左右反轉 |
是 |
|
選項按鈕顯示在文字的右邊 |
沒有作用 |
否 |
|
含有文字的控制項項目以由右向左的讀取順序從右向左顯示 |
沒有作用 |
否 |
|
沒有作用;根據作業系統的語言而定 |
沒有作用 |
否 |
|
將面板配置反轉,垂直捲軸顯示在左邊,水平捲軸則從右邊開始 |
使用 TableLayoutPanel 將子控制項的順序左右反轉 |
否 |
|
不支援 |
沒有作用 |
否 |
|
不支援,改用 StatusStrip |
沒有作用,改用 StatusStrip |
否 |
|
不受這個屬性影響 |
將控制項左右反轉 |
是 |
|
以由右向左讀取順序從右到左顯示文字 |
沒有作用 |
否 |
|
不需要 |
不需要 |
否 |
|
不受這個屬性影響,改用 ToolStrip |
沒有作用,改用 ToolStrip |
是 |
|
設定由右向左讀取順序 |
沒有作用 |
否 |
|
捲軸或追蹤列從右邊開始;如果 Orientation 為垂直,則刻度從右邊開始標記 |
沒有作用 |
否 |
|
只設定由右向左讀取順序 |
將控制項左右反轉 |
是 |
|
垂直捲軸顯示在左邊,水平捲軸的捲動方塊在右邊 |
沒有直接支援,使用 TableLayoutPanel |
否 |
|
顯示在可捲動控制項的左邊,而非右邊 |
沒有作用 |
否 |
編碼方式
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 的容器類別,例如 FlowLayoutPanel 或 TableLayoutPanel)。 如果您將容器上的 AutoScroll 設為 Yes,然後將該容器內的一個或多個控制項的 Anchor 屬性設為 Right,那麼就不會出現任何捲軸。 衍生自 ScrollableControl 的類別會在假設 AutoScroll 設為 No 的情況下執行。
目前唯一的解決方法是以巢狀的方式將 ScrollableControl 放入另一個 ScrollableControl 內。 例如,如果您需要 TableLayoutPanel 在此狀況下運作,可以將其放置在 Panel 控制項的內部,並將 Panel 上的AutoScroll 設定為 Yes。
左右反轉
「左右反轉」(Mirroring) 是指反轉 UI 項目的配置,這樣就能使其從右流向左。 例如,在以左右反轉呈現的 Windows Form 中,[最小化]、[最大化] 和 [關閉] 按鈕出現在標題列的最左邊,而不是最右邊。
將表單或控制項的 RightToLeft 屬性設定為 true 就會反轉表單上各項目的讀取順序,但是這項設定並不會將配置反轉為由右向左,也就是說,它並不會造成左右反轉的效果。 例如,設定這個屬性並不會將表單標題列中的 [最小化]、[最大化] 和 [關閉] 按鈕移到表單的左邊。 同樣地,某些控制項 (例如 TreeView 控制項) 就需要左右反轉,以便將其顯示變更為適用於阿拉伯文或希伯來文。 設定 RightToLeftLayout 屬性就可以將這些控制項左右反轉。
下列控制項可以建立左右反轉的版本:
有些控制項已密封, 因此,您無法從中衍生新的控制項, 其中包括 ImageList 和 ProgressBar 控制項。