Windows フォーム アプリケーションの Bi-Directional サポート
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