Windows フォーム アプリケーションの双方向サポート
更新 : 2007 年 11 月
Visual Studio では、アラビア語やヘブライ語などの双方向 (右から左の) 言語をサポートする Windows アプリケーションを作成できます。これは、標準フォーム、ダイアログ ボックス、MDI フォーム、およびそれらのフォームで使用するすべてのコントロール、つまり、Control 名前空間のすべてのオブジェクトに対してサポートされます。
カルチャのサポート
カルチャおよび UI カルチャの設定により、アプリケーションで日付、時刻、通貨などの情報がどのように処理されるかが決まります。双方向言語に対するカルチャおよび UI カルチャのサポートは、他の言語の場合と同じです。詳細についてはグローバルな Windows フォームおよび Web フォームにおけるカルチャ固有のクラス およびグローバルな Windows フォームおよび Web フォームにおけるカルチャ固有のクラス およびグローバルな Windows フォームおよび Web フォームにおけるカルチャ固有のクラス およびグローバルな Windows フォームおよび Web フォームにおけるカルチャ固有のクラス.
RightToLeft プロパティと RightToLeftLayout プロパティ
フォームの派生元となる Control 基本クラスには、RightToLeft プロパティが含まれています。このプロパティを設定して、フォームおよびそのコントロールの読み取り順序を変更できます。フォームの RightToLeft プロパティを設定すると、そのフォーム上のコントロールは既定でこの設定を継承します。ただし、ほとんどのコントロールでは個別に RightToLeft プロパティを設定することもできます。詳細については方法 : グローバリゼーション用に Windows フォームで右から左の方向でテキストを表示する および方法 : グローバリゼーション用に Windows フォームで右から左の方向でテキストを表示する および方法 : グローバリゼーション用に Windows フォームで右から左の方向でテキストを表示する および方法 : グローバリゼーション用に Windows フォームで右から左の方向でテキストを表示する および方法 : グローバリゼーション用に Windows フォームで右から左の方向でテキストを表示する.
RightToLeft プロパティの効果は、コントロールによって異なる場合があります。一部のコントロール (Button、TreeView、および ToolTip) では、このプロパティで読み取り順序だけが設定されます。一方、RightToLeft プロパティによって読み取り順序とレイアウトの両方が変更されるコントロールもあります。たとえば、RadioButton、ComboBox、CheckBox などのコントロールです。他のコントロールでは、右から左のレイアウトをミラー化するために RightToLeftLayout プロパティを適用する必要があります。各 Windows フォーム コントロールにおける RightToLeft プロパティと RightToLeftLayout プロパティの効果の詳細を次の表に示します。
コントロール/コンポーネント |
RightToLeft プロパティの効果 |
RightToLeftLayout プロパティの効果 |
ミラー化が必要か |
---|---|---|---|
右から左への読み取り順序が設定されます。TextAlign、ImageAlign、および TextImageRelation が反転されます。 |
影響なし |
いいえ |
|
チェック ボックスがテキストの右側に表示されます。 |
影響なし |
いいえ |
|
すべてのチェック ボックスがテキストの右側に表示されます。 |
影響なし |
いいえ |
|
影響を受けません。オペレーティング システムの言語によります。 |
影響なし |
いいえ |
|
コンボ ボックス コントロール内の各項目が右寄せで表示されます。 |
影響なし |
いいえ |
|
右から左への読み取り順序で、右寄せで表示されます。 |
影響なし |
いいえ |
|
右から左への読み取り順序で、右寄せで表示されます。 |
影響なし |
いいえ |
|
右から左への読み取り順序とコントロールのレイアウト両方に影響があります。 |
影響なし |
いいえ |
|
影響を受けません。オペレーティング システムの言語によります。 |
コントロールをミラー化 |
はい |
|
上下の矢印ボタンが左寄せで表示されます。 |
影響なし |
いいえ |
|
サポートなし |
影響なし |
いいえ |
|
オペレーティング システムの言語によって異なります。 |
影響なし |
いいえ |
|
右から左への読み取り順序を設定し、スクロール バーを反転させます。 |
フォームをミラー化 |
はい |
|
キャプションが右寄せで表示されます。子コントロールはこのプロパティを継承する場合があります。 |
右から左へのミラー化をサポートするコントロール内で、TableLayoutPanel を使用 |
いいえ |
|
スクロール ボックス (つまみ) が右寄せで始まります。 |
影響なし |
いいえ |
|
必要ありません。 |
影響なし |
いいえ |
|
右寄せで表示されます。TextAlign と ImageAlign を反転させます。 |
影響なし |
いいえ |
|
右寄せで表示されます。TextAlign と ImageAlign を反転させます。 |
影響なし |
いいえ |
|
項目が右寄せで表示されます。 |
影響なし |
いいえ |
|
読み取り順序が右から左に設定されますが、要素は左寄せのままです。 |
コントロールをミラー化 |
はい |
|
(デザイン時ではなく) 実行時に、右から左への読み取り順序で、右寄せで表示されます。 |
影響なし |
いいえ |
|
右から左にテキストを表示します。 |
影響なし |
いいえ |
|
影響を受けません。オペレーティング システムの言語によります。 |
コントロールをミラー化 |
はい |
|
サポートなし |
サポートなし |
いいえ |
|
上下の矢印ボタンが左寄せで表示されます。 |
影響なし |
いいえ |
|
影響を受けません。オペレーティング システムの言語によります。 |
影響なし |
いいえ |
|
影響を受けません。オペレーティング システムの言語によります。 |
影響なし |
いいえ |
|
子コントロールはこのプロパティを継承する場合があります。 |
右から左をサポートするコントロール内で、TableLayoutPanel を使用 |
はい |
|
サポートなし |
影響なし |
いいえ |
|
影響を受けません。オペレーティング システムの言語によります。 |
影響なし |
いいえ |
|
垂直スクロール バーが左側に表示され、水平スクロール バーが左側から始まります。 |
影響なし |
いいえ |
|
サポートなし |
サポートなし |
いいえ |
|
このプロパティによる影響はありません。 |
コントロールをミラー化 |
はい |
|
オプション ボタンがテキストの右側に表示されます。 |
影響なし |
いいえ |
|
テキストを含むコントロール要素が右から左への読み取り順序で、右から左に表示されます。 |
影響なし |
いいえ |
|
影響を受けません。オペレーティング システムの言語によります。 |
影響なし |
いいえ |
|
パネル レイアウトは反転されます。垂直スクロール バーは左側に表示され、水平スクロール バーは右側を起点にします。 |
TableLayoutPanel を使用して、子コントロールの順序をミラー化 |
いいえ |
|
サポートなし |
影響なし |
いいえ |
|
サポートなし (StatusStrip を代わりに使用) |
影響なし (StatusStrip を代わりに使用) |
いいえ |
|
このプロパティによる影響はありません。 |
コントロールをミラー化 |
はい |
|
テキストが右から左への読み取り順序で、右から左に表示されます。 |
影響なし |
いいえ |
|
必要ありません。 |
必要ありません。 |
いいえ |
|
このプロパティによる影響はありません (ToolStrip を代わりに使用) |
影響なし (ToolStrip を代わりに使用) |
はい |
|
右から左への読み取り順序が設定されます。 |
影響なし |
いいえ |
|
スクロールまたはトラックは右側を起点にします。Orientation が垂直のとき、目盛りは右側から始まります。 |
影響なし |
いいえ |
|
右から左への読み取り順序だけが設定されます。 |
コントロールをミラー化 |
はい |
|
垂直スクロール バーは左側に表示されます。水平スクロール バーは右側につまみが表示されます。 |
直接のサポートなし (TableLayoutPanel を使用) |
いいえ |
|
スクロール可能なコントロールの右側ではなく、左側に表示されます。 |
影響なし |
いいえ |
エンコーディング
Windows フォームでは Unicode がサポートされているため、双方向アプリケーションの作成時に任意の文字セットを含めることができます。ただし、すべての Windows フォーム コントロールがすべてのプラットフォームでの Unicode をサポートしているわけではありません。詳細については、「エンコード方式および Windows フォームのグローバリゼーション」を参照してください。
GDI+
GDI+ を使用すると、テキストを右から左への読み取り順序で描画できます。テキストの描画に使用する DrawString メソッドでは、StringFormat パラメータがサポートされています。テキストの起点を反転するには、このパラメータを StringFormatFlags 列挙型の DirectionRightToLeft メンバに設定します。
コモン ダイアログ ボックス
[ファイルを開く] ダイアログ ボックスなどのシステム ツールは、Windows の制御下にあります。これらのツールは、オペレーティング システムから言語要素を継承します。言語設定が正しく設定された Windows のバージョンを使用している場合は、これらのダイアログ ボックスで双方向言語が適切に処理されます。
同様に、メッセージ ボックスもオペレーティング システムをとおして双方向テキストをサポートします。メッセージ ボックスのボタンのキャプションは、現在の言語設定に基づいています。メッセージ ボックスでは、右から左への読み取り順序が既定では使用されませんが、メッセージ ボックスを表示するときにこれを変更するパラメータを指定できます。詳細については、「方法 : 双方向 Windows フォームのメッセージ ボックスを作成する」を参照してください。
RightToLeft、Scrollbars、および ScrollableControl
現在、RightToLeft が有効で AutoScroll が Yes に設定されている場合、ScrollableControl から派生したすべてのクラスが正しく動作しないという制限が Windows フォームにあります。たとえば、Panel (または FlowLayoutPanel や TableLayoutPanel など Panel から派生したコンテナ クラス) などのコントロールをフォームに配置する場合です。コンテナの AutoScroll を Yes に設定し、そのコンテナ内の 1 つ以上のコントロールについて Anchor プロパティを Right に設定する場合、スクロール バーは表示されません。ScrollableControl から派生したクラスは、AutoScroll が No に設定されているように動作します。
現在の唯一の対応策は、ScrollableControl を別の ScrollableControl 内に入れ子にすることです。たとえば、この状況で TableLayoutPanel が機能するようにするには、Panel コントロール内に配置し、Panel の AutoScroll を Yes に設定します。
ミラー化
ミラー化 とは、右から左に読むように UI 要素のレイアウトを反転することです。たとえば、ミラー化された Windows フォームでは、最小化ボタン、最大化ボタン、および閉じるボタンがタイトル バーの右端ではなく左端に表示されます。
フォームやコントロールの RightToLeft プロパティを true に設定するとフォーム上の要素の読み取り順序が反転されますが、レイアウトが右から左になるようには変更されません。つまり、ミラー化は行われません。たとえば、このプロパティを正しく設定しても、フォームのタイトル バーの [最小化] ボタン、[最大化] ボタン、および [閉じる] ボタンはフォームの左側に移動しません。また、その他のコントロールの中にも、アラビア語やヘブライ語に合わせて表示を変更するためにミラー化が必要なものがあります (TreeView コントロールなど)。これらのコントロールをミラー化するには、RightToLeftLayout プロパティを設定します。
ミラー化できるコントロールを次に示します。
一部のコントロールはシールされています。そのため、シールされたコントロールから新しいコントロールを派生させることはできません。たとえば、ImageList コントロールや ProgressBar コントロールなどです。
参照
概念
ASP.NET Web アプリケーションに対する双方向サポート