Windows フォーム アプリケーションの双方向サポート
Visual Studio を使用して、アラビア語やヘブライ語などの双方向 (右から左) の言語をサポートする Windows ベースのアプリケーションを作成できます。 これには、標準的なフォーム、ダイアログ ボックス、MDI フォームや、これらのフォームで操作できるすべてのコントロール、まり、Control 名前空間のすべてのオブジェクトが含まれます。
カルチャのサポート
カルチャと UI カルチャの設定は、アプリケーションが日付、時刻、通貨、およびその他の情報をどのように操作するかを決定します。 双方向言語のカルチャおよび UI カルチャのサポートは、その他の言語と同じです。 詳細については、グローバルな Windows フォームおよび Web フォームにおけるカルチャ固有のクラスに関する記事を参照してください。
RightToLeft プロパティと RightToLeftLayout プロパティ
フォームの派生元となる基底 Control クラスには、フォームとコントロールの読み取り順序を変更するよう設定できる RightToLeft プロパティが含まれます。 フォームの RightToLeft プロパティを設定する場合、既定ではフォームのコントロールがこの設定を継承します。 ただし、ほとんどのコントロールで RightToLeft プロパティを個別に設定することもできます。 「方法 : グローバリゼーション用に Windows フォームで右から左の方向でテキストを表示する」も参照してください。
RightToLeft プロパティの影響は、コントロールごとに異なります。 一部のコントロールで、Button、TreeView、および ToolTip の各コントロールの場合のように、プロパティでは読み取り順序のみを設定します。 その他のコントロールでは、RightToLeft プロパティが読み取り順序とレイアウトの両方を変更します。 これには、RadioButton、ComboBox、および CheckBox の各コントロールが含まれます。 その他のコントロールには、右から左のレイアウトのミラーに適用される RightToLeftLayout プロパティが必要です。 次の表は、RightToLeft プロパティと RightToLeftLayout プロパティが個々 の Windows フォーム コントロールに影響する方法の詳細を示します。
コントロールとコンポーネント | RightToLeft プロパティの効果 | RightToLeftLayout プロパティの効果 | ミラー化が必要か |
---|---|---|---|
Button | RTL の読み取り順序を設定します。 TextAlign、ImageAlign、および 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 が有効になり、AutoScroll が Yes に設定されている場合に、ScrollableControl から派生したすべてのクラスが適切に動作しされません。 たとえば、フォームに Panel のようなコントロールや、Panel (FlowLayoutPanel または TableLayoutPanel など) から派生したコンテナー クラスを配置するとします。 コンテナーの AutoScroll を Yes に設定し、コンテナー内の 1 つ以上のコントロールの Anchor プロパティを Right に設定する場合、スクロール バーが表示されません。 ScrollableControl から派生するクラスは、AutoScroll が No に設定された場合のように動作します。
現在、唯一の回避策は、別の ScrollableControl 内側に ScrollableControl をネストすることです。 たとえば、この状況で TableLayoutPanel が動作することが必要な場合は、Panel コントロールの内側に配置して、Panel 上の AutoScroll を Yes に設定します。
ミラーリング
ミラーリングとは、右から左にフローするように UI 要素のレイアウトを反転させることを指します。 たとえば、ミラーリングされた Windows フォームでは、最小化、最大化、および閉じるボタンはタイトル バーの右端ではなく左端に表示されます。
フォームまたはコントロールの RightToLeft プロパティを true
に設定すると、フォームの要素の読み取り順序が反転しますが、この設定は、右から左のレイアウトを反転しません。つまり、ミラーリングが発生しません。 たとえば、このプロパティを設定しても、フォームのタイトル バーにある [最小化]、[最大化]、[閉じる] の各ボタンがフォームの左側に移動することはありません。 同様に、TreeView コントロールなどのいくつかコントロールは、アラビア語またはヘブライ語に適した表示に変更するには、ミラーリングが必要です。 RightToLeftLayout プロパティを設定することで、これらのコントロールをミラーリングできます。
次のコントロールのミラーリングされたバージョンを作成できます。
一部のコントロールはシールされています。 そのため、そこから新しいコントロールを派生できません。 これには、ImageList コントロールや ProgressBar コントロールが含まれます。
関連項目
.NET Desktop feedback