Winform窗體控件級權限處理

公共類:this

static class PowerHelper
    {
        /// <summary>
        /// 設置form上的組件的權限
        /// </summary>
        /// <param name="form">控件所在的窗體</param>
        /// <param name="getPermissionsHandler">取得form裏組件名及其Enabled屬性(當前用戶)的鍵值對</param>
        public static void SetPermissions(this Form form, Func<Form, IDictionary<string, bool>> getPermissionsHandler)
        {
            Type t = form.GetType();
            FieldInfo[] fs = t.GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
            IDictionary<string, bool> permissions = getPermissionsHandler(form);
            foreach (FieldInfo f in fs)
            {
                dynamic component = f.GetValue(form);
                if (component is System.ComponentModel.Component && permissions.ContainsKey(f.Name))
                {
                    try
                    {
                        //禁用
                        component.Enabled = permissions[f.Name];
                        //隱藏
                        //component.Visible = permissions[f.Name];
                    }
                    catch { }
                }
            }
        }component

基類窗體加入驗證:orm

    public partial class BaseForm : Form
    {
        public BaseForm()
        {
            InitializeComponent();
        }繼承

        private void BaseForm_Load(object sender, EventArgs e)
        {
            Func<Form, IDictionary<string, bool>> powerFunc = ValidatePower;
            PowerHelper.SetPermissions(this, powerFunc);
        }ip


        private Dictionary<string, bool> ValidatePower(Form frm)
        {
            Dictionary<string, bool> powerList = new Dictionary<string, bool>();
            powerList.Add("toolStripButton1", false);
            powerList.Add("button3", false);
            powerList.Add("textBox2", false);
            return powerList;
        }
    }get

程序窗體繼承基類:string

    public partial class Form1 : BaseForm
    {
        public Form1()
        {
            InitializeComponent();
        }
    }it

相關文章
相關標籤/搜索