zoukankan      html  css  js  c++  java
  • WinForm 动态设置控件属性

    本文用到的是 Winform + Dev 控件

    主要功能:可以读取配置(从数据库或者配置文件中读取),通过配置控制前面控件的属性

    • 放点控件

    • 先准备用到的实体
    
    /// <summary>
    /// 控件配置
    /// </summary>
    public class ControlList
    {
        /// <summary>
        /// 控件NAME
        /// </summary>
        public string ControlName { get; set; }
        /// <summary>
        /// 控件类型
        /// </summary>
        public string ControlTypeName { get; set; }
        /// <summary>
        /// 控件默认值
        /// </summary>
        public string ControlDefaultVal { get; set; }
        /// <summary>
        /// 控件可用
        /// </summary>
        public bool ControlEnable { get; set; }
        /// <summary>
        /// 控件显示
        /// </summary>
        public ControlvisibleInfo ControlVisible { get; set; }
    }
    
    public class ControlvisibleInfo
    {
        /// <summary>
        /// 显示值 
        /// </summary>
        public DevExpress.XtraLayout.Utils.LayoutVisibility IsVisible { get; set; }
    
        /// <summary>
        /// 包控件的Item
        /// </summary>
        public string PatientItem { get; set; }
    }
    
    
    • 正文
    public partial class Form5 : Form
    {
        public Form5()
        {
            InitializeComponent();
        }
    
        private void Form5_Load(object sender, EventArgs e)
        {
            BindData();
    
            SetControlsPropertyVal();
        }
    
        public List<ControlList> listName = new List<ControlList>();
    
        public void SetControlsPropertyVal()
        {
            foreach (ControlList item in listName)
            {
                Control[] ctrols = layoutControl1.Controls.Find(item.ControlName, true);
    
                if (ctrols.Length > 0)
                {
                    Type t = ctrols[0].GetType();
    
                    if (t.Name == item.ControlTypeName && ctrols[0].Name == item.ControlName)
                    {
                        object o = t.GetProperty("EditValue").GetValue(ctrols[0], null);
    
                        t.GetProperty("EditValue").SetValue(ctrols[0], item.ControlDefaultVal);
    
                        t.GetProperty("Enabled").SetValue(ctrols[0], item.ControlEnable);
    
                        if (item.ControlVisible != null)
                        {
                            DevExpress.XtraLayout.BaseLayoutItem obj = layoutControlGroup1.Items.FindByName(item.ControlVisible.PatientItem);
    
                            if (obj != null)
                            {
                                obj.Visibility = item.ControlVisible.IsVisible;
                            }
                        }
                    }
                }
            }
        }
    
        public void BindData()
        {
            #region 绑定控件
            List<SeachLookUpEditDataBind> list = new List<SeachLookUpEditDataBind>
            {
                new SeachLookUpEditDataBind { ID = "1", NAME = "张三" },
                new SeachLookUpEditDataBind { ID = "2", NAME = "李四" },
                new SeachLookUpEditDataBind { ID = "3", NAME = "王五" },
                new SeachLookUpEditDataBind { ID = "4", NAME = "赵六" }
            };
    
            searchLookUpEdit1.Properties.ValueMember = "ID";
            searchLookUpEdit1.Properties.DisplayMember = "NAME";
            searchLookUpEdit1.Properties.DataSource = list;
    
            searchLookUpEdit2.Properties.ValueMember = "ID";
            searchLookUpEdit2.Properties.DisplayMember = "NAME";
            searchLookUpEdit2.Properties.DataSource = list;
            #endregion
    
            #region 设置控件属性值
    
            listName.Add(new ControlList
            {
                ControlName = "textEdit1",
                ControlTypeName = "TextEdit",
                ControlDefaultVal = "234",
                ControlEnable = true,
                ControlVisible = new ControlvisibleInfo
                {
                    IsVisible = DevExpress.XtraLayout.Utils.LayoutVisibility.Always,
                    PatientItem = "layoutControlItem2"
                }
            });
            listName.Add(new ControlList
            {
                ControlName = "searchLookUpEdit1",
                ControlTypeName = "SearchLookUpEdit",
                ControlDefaultVal = "1",
                ControlEnable = false,
                ControlVisible = new ControlvisibleInfo
                {
                    IsVisible = DevExpress.XtraLayout.Utils.LayoutVisibility.Always,
                    PatientItem = "layoutControlItem1"
                }
            });
            listName.Add(new ControlList
            {
                ControlName = "searchLookUpEdit2",
                ControlTypeName = "SearchLookUpEdit",
                ControlDefaultVal = "2",
                ControlEnable = true,
                ControlVisible = new ControlvisibleInfo
                {
                    IsVisible = DevExpress.XtraLayout.Utils.LayoutVisibility.Never,
                    PatientItem = "layoutControlItem3"
                }
            });
            listName.Add(new ControlList
            {
                ControlName = "radioGroup1",
                ControlTypeName = "RadioGroup",
                ControlDefaultVal = "1",
                ControlEnable = true,
                ControlVisible = new ControlvisibleInfo
                {
                    IsVisible = DevExpress.XtraLayout.Utils.LayoutVisibility.Always,
                    PatientItem = "layoutControlItem4"
                }
            });
    
            #endregion
        }
    }
    
    直如弦,死道边;曲如钩,反封侯
  • 相关阅读:
    【剑指Offer面试编程题】题目1370:数组中出现次数超过一半的数字--九度OJ
    【剑指Offer面试编程题】题目1369:字符串的排列--九度OJ
    【剑指Offer面试编程题】题目1503:二叉搜索树与双向链表--九度OJ
    【剑指Offer面试编程题】题目1524:复杂链表的复制--九度OJ
    【剑指Offer面试编程题】题目1368:二叉树中和为某一值的路径--九度OJ
    【剑指Offer面试编程题】题目1367:二叉搜索树的后序遍历序列--九度OJ
    【剑指Offer面试编程题】题目1523:从上往下打印二叉树--九度OJ
    【剑指Offer面试编程题】题目1366:栈的压入、弹出序列--九度OJ
    【剑指Offer面试编程题】题目1522:包含min函数的栈--九度OJ
    【剑指Offer面试编程题】题目1391:顺时针打印矩阵--九度OJ
  • 原文地址:https://www.cnblogs.com/houlin/p/15205606.html
Copyright © 2011-2022 走看看