如何根据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,来控制其一些常用属性!(必须要支持所有控件和组件,对可写,禁用,隐藏等常用属性控制)

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

posted @ 2013-02-02 11:01  blog_momo  阅读(375)  评论(0)    收藏  举报