Windows フォーム アプリケーションの双方向サポート

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 (FlowLayoutPanel または TableLayoutPanel など) から派生したコンテナー クラスを配置するとします。 コンテナーの AutoScrollYes に設定し、コンテナー内の 1 つ以上のコントロールの Anchor プロパティを Right に設定する場合、スクロール バーが表示されません。 ScrollableControl から派生するクラスは、AutoScrollNo に設定された場合のように動作します。

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

ミラーリング

ミラーリングとは、右から左にフローするように UI 要素のレイアウトを反転させることを指します。 たとえば、ミラーリングされた Windows フォームでは、最小化、最大化、および閉じるボタンはタイトル バーの右端ではなく左端に表示されます。

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

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

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

関連項目