Как заставить RightToLeftLayout работать на средства управления в GroupBoxes и Панелях?

Поместите свое изображение в раскадровку так, чтобы оно не отображалось программно, пока оно не будет изменено по умолчанию.

5
задан eugensk 29 September 2008 в 06:48
поделиться

2 ответа

Это делает замеченный, что у Вас есть вполне противная проблема на Ваших руках. Играли с ним некоторое время и придумали следующее:

При использовании небольшой рекурсии можно работать, хотя все средства управления и делают ручное преобразование RTL для тех средств управления, захваченных в Pannels и GroupBoxes.

Это - быстрая небольшая насмешка для кода, который я хлопнул вместе. Я предположил бы, что Вы помещаете это в свой BaseForm (наймы, надеясь, что у Вас есть один из них), и запрос к основной загрузке формы.

private void SetRTL (bool setRTL)
{
    ApplyRTL(setRTL, this);
}

private void ApplyRTL(bool yes, Control startControl)
{
    if ((startControl is Panel ) || (startControl is GroupBox))
    {
        foreach (Control control in startControl.Controls)
        {
            control.Location = CalculateRTL(control.Location, startControl.Size, control.Size);
        }
    }

    foreach (Control control in startControl.Controls)
        ApplyRTL(yes, control);
}

private Point CalculateRTL (Point currentPoint, Size parentSize, Size currentSize)
{
    return new Point(parentSize.Width - currentSize.Width - currentPoint.X, currentPoint.Y);
}
8
ответ дан 13 December 2019 в 05:44
поделиться

В соответствии со статьей Visual Studio 2005: Разработка арабских приложений Windows Forms меня оставляют со всего двумя альтернативами

  • продолжите добавлять TableLayoutPanels тут и там
  • измените местоположение дочерних элементов управления на RTL, изменяют меня

Это - реальная жалость, что это должен быть тот путь.

1
ответ дан 13 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: