c# - 面板中的 RightToLeftLayout

标签 c# winforms

我有一个要用于 Arabia 的 Windows 项目 (C#)。众所周知,该国遵循从右到左的机制。如何以 RTL(从右到左)格式移动面板中的所有控件位置。我已将属性“RightToLeft”和“RightToLeftLayout”设置为 true,但它只在窗体内部移动控件而不是面板。看例子

enter image description here

我在控件移动时应用了上述属性,这些属性只是在表单上,​​但面板内的控件保持原样。

最佳答案

你可以使用这个控件:)

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

关于c# - 面板中的 RightToLeftLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26096550/

相关文章:

c# - UWP Store App 中的隐私政策 ?提交应用商店认证失败

c# - Property Getter中的缓存密集型计算

c# - 检查类型是否属于没有硬编码字符串的 namespace

.net - 如何从 WinForms 应用程序中用户控件上的子控件中获取事件?

c# - 这是 Cast<T> 在 Controls 集合上的正常行为吗?

c# - 为什么我的 Winforms 托管的 WCF 服务是单线程的?

c# - 动态用户控制变量(嵌入式语言?)

c# - 创建对象时出现 TypeInitializationException 异常

c# - 蒙版文本框输入左对齐

C# 在拖放时在 ListView 中实现自动滚动