首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >远程RibbonBar定位

远程RibbonBar定位
EN

Stack Overflow用户
提问于 2017-04-11 11:49:13
回答 1查看 86关注 0票数 0

我们的应用程序支持多种语言,但存在一个问题。

我们使用这段代码来改变语言,它除了丝带外还能工作。

代码语言:javascript
复制
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(langCode);
        SuspendLayout();
        ComponentResourceManager manager = new ComponentResourceManager(this.GetType());
        manager.ApplyResources(this, "$this");
        ApplyResources(manager, this.Controls);
        ResumeLayout();



private void ApplyResources(ComponentResourceManager manager,Control.ControlCollection ctls)
        {

            //all controls
            foreach (Control ctl in ctls)
            {
                manager.ApplyResources(ctl, ctl.Name);
                Trace.WriteLine("Control: " + ctl.GetType().ToString());
                ApplyResources(manager, ctl.Controls);
            }
        }

问题是核蛋白棒没有孩子。选项卡在CommandTabs集合中,并且这些项不是由windows.controls派生的。

那我该用什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-11 13:17:58

我解决了这个问题,虽然有点脏,但对我来说很管用。

代码语言:javascript
复制
  private void ApplyResources(ComponentResourceManager manager, object controls)
    {
        if (controls is Control.ControlCollection)
        {
            var ctls = (Control.ControlCollection)controls;
            //all controls
            foreach (Control ctl in ctls)
            {

                if (ctl is RadRibbonBar)
                {
                    var tabs = ((RadRibbonBar)ctl).CommandTabs;
                    foreach (RibbonTab tab in tabs)
                    {
                        manager.ApplyResources(tab, tab.Name);
                        ApplyResources(manager, tab.Items);
                    }

                }
                else
                {
                    manager.ApplyResources(ctl, ctl.Name);
                    ApplyResources(manager, ctl.Controls);
                }
            }
        }
        else // if (controls is RadItemOwnerCollection)
        {
            var elementCollection = controls as RadItemOwnerCollection;


            foreach (var elem in elementCollection)
            {
                if (elem is RadRibbonBarGroup)
                {
                    var barGroup = elem as RadRibbonBarGroup;
                    manager.ApplyResources(barGroup, barGroup.Name);
                    ApplyResources(manager, barGroup.Items);
                }
                else if (elem is RadRibbonBarButtonGroup)
                {
                    var btnGroup = elem as RadRibbonBarButtonGroup;
                    manager.ApplyResources(btnGroup, btnGroup.Name);
                    ApplyResources(manager, btnGroup.Items);
                }
                else
                {
                    manager.ApplyResources(elem, elem.Name);

                }
            }
        }


    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43345074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档