質問

フォームのタイトル、アイコン、閉じる、ヘルプボタンを左側から右側に移動します(レイアウトを変更します)。

背景画像を保持するためにフォームコントロールを手動で移動しましたが、フォームタイトルを変更したいです。

フォームプロパティで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);
}

画像を並べる必要がある場合は、もう少し作業が必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top