次の方法で共有


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 プロパティの効果は、コントロールによって異なる場合があります。一部のコントロール (ButtonTreeView、および ToolTip) では、このプロパティで読み取り順序だけが設定されます。一方、RightToLeft プロパティによって読み取り順序とレイアウトの両方が変更されるコントロールもあります。たとえば、RadioButtonComboBoxCheckBox などのコントロールです。他のコントロールでは、右から左のレイアウトをミラー化するために RightToLeftLayout プロパティを適用する必要があります。各 Windows フォーム コントロールにおける RightToLeft プロパティと RightToLeftLayout プロパティの効果の詳細を次の表に示します。

コントロール/コンポーネント

RightToLeft プロパティの効果

RightToLeftLayout プロパティの効果

ミラー化が必要か

Button

右から左への読み取り順序が設定されます。TextAlignImageAlign、および TextImageRelation が反転されます。

影響なし

いいえ

CheckBox

チェック ボックスがテキストの右側に表示されます。

影響なし

いいえ

CheckedListBox

すべてのチェック ボックスがテキストの右側に表示されます。

影響なし

いいえ

ColorDialog

影響を受けません。オペレーティング システムの言語によります。

影響なし

いいえ

ComboBox

コンボ ボックス コントロール内の各項目が右寄せで表示されます。

影響なし

いいえ

ContextMenu

右から左への読み取り順序で、右寄せで表示されます。

影響なし

いいえ

DataGrid

右から左への読み取り順序で、右寄せで表示されます。

影響なし

いいえ

DataGridView

右から左への読み取り順序とコントロールのレイアウト両方に影響があります。

影響なし

いいえ

DateTimePicker

影響を受けません。オペレーティング システムの言語によります。

コントロールをミラー化

はい

DomainUpDown

上下の矢印ボタンが左寄せで表示されます。

影響なし

いいえ

ErrorProvider

サポートなし

影響なし

いいえ

FontDialog

オペレーティング システムの言語によって異なります。

影響なし

いいえ

Form

右から左への読み取り順序を設定し、スクロール バーを反転させます。

フォームをミラー化

はい

GroupBox

キャプションが右寄せで表示されます。子コントロールはこのプロパティを継承する場合があります。

右から左へのミラー化をサポートするコントロール内で、TableLayoutPanel を使用

いいえ

HScrollBar

スクロール ボックス (つまみ) が右寄せで始まります。

影響なし

いいえ

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 フォームでは Unicode がサポートされているため、双方向アプリケーションの作成時に任意の文字セットを含めることができます。ただし、すべての Windows フォーム コントロールがすべてのプラットフォームでの Unicode をサポートしているわけではありません。詳細については、「エンコード方式および Windows フォームのグローバリゼーション」を参照してください。

GDI+

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

コモン ダイアログ ボックス

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

同様に、メッセージ ボックスもオペレーティング システムをとおして双方向テキストをサポートします。メッセージ ボックスのボタンのキャプションは、現在の言語設定に基づいています。メッセージ ボックスでは、右から左への読み取り順序が既定では使用されませんが、メッセージ ボックスを表示するときにこれを変更するパラメータを指定できます。詳細については、「方法 : 双方向 Windows フォームのメッセージ ボックスを作成する」を参照してください。

RightToLeft、Scrollbars、および ScrollableControl

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

現在の唯一の対応策は、ScrollableControl を別の ScrollableControl 内に入れ子にすることです。たとえば、この状況で TableLayoutPanel が機能するようにするには、Panel コントロール内に配置し、PanelAutoScrollYes に設定します。

ミラー化

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

フォームやコントロールの RightToLeft プロパティを true に設定するとフォーム上の要素の読み取り順序が反転されますが、レイアウトが右から左になるようには変更されません。つまり、ミラー化は行われません。たとえば、このプロパティを正しく設定しても、フォームのタイトル バーの [最小化] ボタン、[最大化] ボタン、および [閉じる] ボタンはフォームの左側に移動しません。また、その他のコントロールの中にも、アラビア語やヘブライ語に合わせて表示を変更するためにミラー化が必要なものがあります (TreeView コントロールなど)。これらのコントロールをミラー化するには、RightToLeftLayout プロパティを設定します。

ミラー化できるコントロールを次に示します。

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

参照

概念

ASP.NET Web アプリケーションに対する双方向サポート

その他の技術情報

Windows フォームのグローバル化