Вопрос

Я хочу переместить заголовок формы, значок и кнопку закрытия, а также кнопки справки с левой стороны на правую (изменить макет).

Я переместил элементы управления формы вручную, чтобы сохранить фоновое изображение, но теперь хочу изменить заголовок формы.

Когда я устанавливаю для свойства rightToLeft значение «да», а для свойства rightToLeftLayout — значение true в свойствах формы, фоновое изображение исчезает, но оно использует свойство «BackColor».

Мой код выглядит следующим образом:

if (_lang == 'Arabic')
{
    this.RightToLeft =  RightToLeft.Yes;
    this.RightToLeftLayout = true;
}

Но изображение кнопок сохраняется.

Так почему же это?

Это было полезно?

Решение

В дополнение к ответу Блаунти в спецификациях MSDN четко указано, что BackgroundImage, Opacity и другие не поддерживаются при использовании RightToLeftLayout:

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.righttoleftlayout(vs.80).aspx:

Отрисовка владельца не поддерживается, если для параметра RightToLeftLayout установлено значение Да.События отрисовки владельца по-прежнему будут происходить, но поведение любого кода, который вы создаете в этих событиях, не определено.Кроме того, не поддерживаются BackgroundImage, Opacity, TransparencyKey и события рисования.

Другие советы

BackgroundImage, Opacity, TransparencyKey и события рисования не поддерживаются, если для параметра RightToLeftLayout установлено значение «да».

Заменить утраченный функционал довольно легко:

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