次の方法で共有


Windows フォーム アプリケーションの Bi-Directional サポート

Visual Studio を使用して、アラビア語やヘブライ語などの双方向 (右から左) 言語をサポートする Windows ベースのアプリケーションを作成できます。 これには、標準フォーム、ダイアログ ボックス、MDI フォーム、およびこれらのフォームで操作できるすべてのコントロール (つまり、Control 名前空間内のすべてのオブジェクト) が含まれます。

カルチャのサポート

カルチャと UI カルチャの設定によって、アプリケーションが日付、時刻、通貨、およびその他の情報とどのように連携するかが決まります。 カルチャと UI カルチャのサポートは、双方向言語の場合と、他の言語の場合と同じです。 詳細については、「カルチャ固有のクラスグローバル Windows フォームと Web フォーム」を参照してください。

RightToLeft プロパティと RightToLeftLayout プロパティ

フォームの派生元となる基本 Control クラスには、フォームとそのコントロールの読み取り順序を変更するために設定できる RightToLeft プロパティが含まれています。 フォームの RightToLeft プロパティを設定した場合、フォームの既定のコントロールはこの設定を継承します。 ただし、ほとんどのコントロールで RightToLeft プロパティを個別に設定することもできます。 「方法: グローバリゼーション用に Windows フォームに右から左にテキストを表示する」も参照してください。

RightToLeft プロパティの効果は、コントロール間で異なる場合があります。 一部のコントロールでは、プロパティは、ButtonTreeView、および ToolTip コントロールのように、読み取り順序のみを設定します。 他のコントロールでは、RightToLeft プロパティは読み取り順序とレイアウトの両方を変更します。 これには、RadioButtonComboBox、および CheckBox コントロールが含まれます。 他のコントロールでは、RightToLeftLayout プロパティを適用して、レイアウトを右から左にミラー化する必要があります。 次の表は、RightToLeft プロパティと RightToLeftLayout プロパティが個々の Windows フォーム コントロールにどのように影響するかを示しています。

コントロール/コンポーネント RightToLeft プロパティの効果 RightToLeftLayout プロパティの効果 ミラーリングが必要ですか?
Button RTL の読み取り順序を設定します。 TextAlignImageAlign、および TextImageRelation を反転する 無効 いいえ
CheckBox テキストの右側にチェック ボックスが表示されます 無効 いいえ
CheckedListBox テキストの右側にすべてのチェック ボックスが表示されます 無効 いいえ
ColorDialog 影響を受けません。は、オペレーティング システムの言語によって異なります 無効 いいえ
ComboBox コンボ ボックス コントロール内の項目が右揃えになっている 無効 いいえ
ContextMenu RTL の読み取り順序に合わせて右揃えで表示される 無効 いいえ
DataGrid RTL の読み取り順序に合わせて右揃えで表示される 無効 いいえ
DataGridView RTL の読み取り順序とコントロール レイアウトの両方に影響します 無効 いいえ
DateTimePicker 影響を受けません。は、オペレーティング システムの言語によって異なります コントロールを反映します。 はい
DomainUpDown 上矢印と下矢印ボタンを左揃え 無効 いいえ
ErrorProvider サポートされていません 無効 いいえ
FontDialog オペレーティング システムの言語によって異なります 無効 いいえ
Form RTL の読み取り順序を設定し、スクロール バーを反転します フォームを反映します はい
GroupBox キャプションは右揃えで表示されます。 子コントロールは、このプロパティを継承できます。 コントロール内の TableLayoutPanel を使用して右から左へのミラーリングをサポートする いいえ
HScrollBar 右揃えのスクロール ボックス (つまみ) で始まる 無効 いいえ
ImageList 必須ではありません 無効 いいえ
Label 右揃えに表示されます。 TextAlign および ImageAlign を反転する 無効 いいえ
LinkLabel 右揃えに表示されます。 TextAlign および ImageAlign を反転する 無効 いいえ
ListBox 項目が右揃えになっている 無効 いいえ
ListView 読み取り順序を RTL に設定します。要素は左揃えのまま コントロールを反映します。 はい
MainMenu 実行時に RTL の読み取り順序に合わせて右揃えで表示されます (デザイン時には表示されません) 無効 いいえ
MaskedTextBox 右から左のテキストを表示します。 無効 いいえ
MonthCalendar 影響を受けません。は、オペレーティング システムの言語によって異なります コントロールを反映します。 はい
NotifyIcon サポートされていません サポートされていません いいえ
NumericUpDown 上矢印と下矢印ボタンを左揃え 無効 いいえ
OpenFileDialog 右から左のオペレーティング システムで、含むフォームの RightToLeft プロパティを RightToLeft.Yes に設定すると、ダイアログがローカライズされます 無効 いいえ
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 フォームでは Unicode がサポートされているため、双方向アプリケーションを作成するときに任意の文字セットを含めることができます。 ただし、すべての Windows フォーム コントロールが、すべてのプラットフォームで Unicode をサポートしているわけではありません。

GDI+

GDI+ を使用して、右から左への読み取り順序でテキストを描画できます。 テキストの描画に使用される DrawString メソッドでは、テキストの原点を反転させるために、StringFormatFlags 列挙体の DirectionRightToLeft メンバーに設定できる StringFormat パラメーターがサポートされています。

共通ダイアログ ボックス

[ファイルを開く] ダイアログ ボックスなどのシステム ツールは、Windows のコントロール下にあります。 オペレーティング システムから言語要素を継承します。 正しい言語設定で Windows のバージョンを使用している場合、これらのダイアログ ボックスは双方向言語で正しく機能します。

同様に、メッセージ ボックスはオペレーティング システムを通過し、双方向テキストをサポートします。 メッセージ ボックス ボタンのキャプションは、現在の言語設定に基づいています。 既定では、メッセージ ボックスでは右から左への読み取り順序は使用されませんが、メッセージ ボックスが表示されるときに読み取り順序を変更するパラメーターを指定できます。

RightToLeft、Scrollbars、および ScrollableControl

現在、Windows フォームには、RightToLeft が有効になっていて、AutoScrollYesに設定されている場合に、ScrollableControl から派生したすべてのクラスが正常に動作しないようにする制限があります。 たとえば、Panelなどのコントロールや、Panel から派生したコンテナー クラス (FlowLayoutPanelTableLayoutPanelなど) をフォームに配置するとします。 コンテナーの AutoScrollYes に設定し、コンテナー内の 1 つ以上のコントロールの Anchor プロパティを Rightに設定した場合、スクロール バーは表示されません。 ScrollableControl から派生したクラスは、AutoScrollNoに設定されているかのように機能します。

現在、唯一の回避策は、別の ScrollableControl 内側に ScrollableControl をネストすることです。 たとえば、このような状況で作業するために TableLayoutPanel が必要な場合は、Panel コントロール内に配置し、PanelAutoScrollYesに設定できます。

ミラーリング

ミラーリング は、UI 要素のレイアウトを反転して、右から左に移動することを指します。 たとえば、ミラー化された Windows フォームでは、[最小化]、[最大化]、[閉じる] ボタンがタイトル バーの一番左に表示され、右端には表示されません。

フォームまたはコントロールの RightToLeft プロパティを true に設定すると、フォーム上の要素の読み取り順序が逆になりますが、この設定ではレイアウトが右から左に反転することはありません。つまり、ミラーリングは発生しません。 たとえば、このプロパティを設定しても、フォームのタイトル バーの [最小化]、[の最大化]、[閉じる] ボタンがフォームの左側に移動することはありません。 同様に、TreeView コントロールなどの一部のコントロールでは、アラビア語やヘブライ語に適した表示を変更するためにミラーリングが必要です。 これらのコントロールは、RightToLeftLayout プロパティを設定することでミラー化できます。

ミラー化されたバージョンの次のコントロールを作成できます。

一部のコントロールはシールされています。 そのため、そこから新しいコントロールを派生させることはできません。 これには、ImageList コントロールと ProgressBar コントロールが含まれます。

関連項目