zoukankan      html  css  js  c++  java
  • 如何根据name来找到control/component?

            private Component findcompents(Component ctl, string name)
            {
                var flag = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public;
    
                var fields = ctl.GetType().GetFields(flag).Where(x => x.FieldType.IsSubclassOf(typeof(Component)));
                var findfiled = fields.FirstOrDefault(x => x.Name == name);
                if (findfiled != null) return findfiled.GetValue(ctl) as Component;
    
                foreach (FieldInfo f in fields)
                {
                    var val = f.GetValue(ctl) as Component;
                    if (val != null) return findcompents(val, name);
                }
    
                return null;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                bool value = false;
                string property = "Visible";
                DateTime dt = DateTime.Now;
                var a = findcompents(this, "gridColumn1");
    
                if (property == "Enabled")
                {
                    a.SetEnabled(value);
                }
                else if (property == "ReadOnly")
                {
                    if (!a.SetReadOnly(value))
                    {
                        if (a is DevExpress.XtraEditors.BaseEdit)
                            (a as DevExpress.XtraEditors.BaseEdit).Properties.ReadOnly = !value;
                        else if (a is DevExpress.XtraGrid.Columns.GridColumn)
                            (a as DevExpress.XtraGrid.Columns.GridColumn).OptionsColumn.AllowEdit = value;
                    }
                }
                else if (property == "Visible")
                {
                    if (!a.SetVisible(value))
                    {
                        var visible = value ? BarItemVisibility.Always : BarItemVisibility.Never;
    
                        if (a is DevExpress.XtraBars.BarItem)
                            (a as DevExpress.XtraBars.BarItem).Visibility = visible;
                    }
                }
            }

    应用:可以通过配置界面上的控件的name,来控制其一些常用属性!(必须要支持所有控件和组件,对可写,禁用,隐藏等常用属性控制)

    暂且没有什么好办法,先保留一份,以后再思考!

  • 相关阅读:
    Vue 中的无状态组件
    如何在 Vue 中使用 JSX 以及使用它的原因
    webpack打包优化的四种方法(多进程打包,多进程压缩,资源 CDN,动态 polyfill)
    watch监听对象
    微信小程序动态设置图片大小
    Flutter的生命周期和路由
    两个字符串的编辑距离学习[转载]
    系统进化树怎么看[转载]
    感知机PLA算法实现[转载]
    余弦相似度计算[转载]
  • 原文地址:https://www.cnblogs.com/zhahost/p/2889859.html
Copyright © 2011-2022 走看看