C#のフォームのRightToLeftプロパティ
-
03-07-2019 - |
質問
フォームのタイトル、アイコン、閉じる、ヘルプボタンを左側から右側に移動します(レイアウトを変更します)。
背景画像を保持するためにフォームコントロールを手動で移動しましたが、フォームタイトルを変更したいです。
フォームプロパティでrightToLeftプロパティをyesに設定し、rightToLeftLayoutをtrueに設定すると、背景画像は消えますが、プロパティ「BackColor」を使用します
私のコードは次のとおりです。
if (_lang == 'Arabic')
{
this.RightToLeft = RightToLeft.Yes;
this.RightToLeftLayout = true;
}
ただし、ボタンの画像は保持されます。
では、なぜですか?
解決
Blountyの回答をさらに進めるために、MSDN仕様では、RightToLeftLayoutを使用する場合、BackgroundImage、Opacityなどはサポートされていないことが明確に記載されています。
http:/ /msdn.microsoft.com/en-us/library/system.windows.forms.form.righttoleftlayout(vs.80).aspx :
RightToLeftLayoutがYesに設定されている場合、所有者の描画はサポートされません。オーナー描画イベントは引き続き発生しますが、これらのイベントで作成するコードの動作は定義されていません。また、BackgroundImage、Opacity、TransparencyKey、およびペイントイベントはサポートされていません。
他のヒント
BackgroundImage、Opacity、TransparencyKey、およびペインティングイベントは、RightToLeftLayoutがyesに設定されている場合はサポートされません。
失われた機能を置き換えるのは非常に簡単です:
protected override void OnPaintBackground(PaintEventArgs e) {
Rectangle rc = new Rectangle(Point.Empty, this.ClientSize);
e.Graphics.DrawImage(Properties.Resources.SampleImage, rc);
}
画像を並べる必要がある場合は、もう少し作業が必要です。