Panel中的RightToLeftLayout

时间:2014-09-29 09:24:38

标签: c# winforms

我有一个Windows项目(C#),我们将用于阿拉伯。我们知道这个国家遵循右翼到左翼机制。如何以RTL(从右到左)格式移动面板中的所有控件位置。我已经设置了属性' RightToLeft'和' RightToLeftLayout'为true但它只移动窗体内的控件而不是面板。参见示例

enter image description here

我已经在控件移动时应用了所述属性,这些属性只是在窗体上,但是面板内的控件保持不变。

3 个答案:

答案 0 :(得分:4)

你可以使用这个控件:)

class MyPanel:Panel
{
    private bool myRightToLeftLayout=false;
    public bool MyRightToLeftLayout
    {
        get { return myRightToLeftLayout; }
        set 
        {
            if (value != myRightToLeftLayout)
            {
                foreach (Control item in base.Controls)
                {
                    try
                    {
                        item.RightToLeft = value==true?RightToLeft.No:RightToLeft.Yes;
                        item.Location = new System.Drawing.Point(base.Size.Width - item.Size.Width - item.Location.X, item.Location.Y);
                    }
                    catch { }
                }
                myRightToLeftLayout = value;
            }
        }
    }
}

和这样的结果

MyRightToLeftLayout = false

enter image description here

MyRightToLeftLayout = true

enter image description here

答案 1 :(得分:0)

关于RightToLeftLayout的事实:

  • 如果RightToLeft仅设置为“是”,则会生效。
  • RightToLeftLayout是一个布尔属性,值为true或false RightToLeftLayout属性不会被其子控件继承。
  • 与RightToLeft属性不同,您需要将RightToLeftLayout单独设置为支持此属性的每个控件。
  • RightToLeftLayout将更改其控件的原点并镜像坐标。因此原点位于右上角而不是控件的左上角。然后坐标将增加到左侧,而不是右侧。

所以根据第二点,您需要将其设置为所有单个子元素

答案 2 :(得分:-1)

你可以做两件事:

首先,在Web应用程序的Web.config文件中,将<globalisation>元素的culture属性设置为&#39; ar-SA&#39;

其次,将每个页面元素的HTML dir属性设置为&#34; rtl&#34;