Panel中的RightToLeftLayout

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

在此处输入图像描述

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

你可以使用这个控件:)

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

在此处输入图像描述

MyRightToLeftLayout = true

在此处输入图像描述

关于RightToLeftLayout的事实:

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

所以根据第二点,你需要将它设置为所有单独的子元素

你可以做两件事:

首先,在Web应用程序的Web.config文件中,将元素的culture属性设置为’ar-SA’

其次,将每个页面元素的HTML dir属性设置为“rtl”