1. 程式人生 > >窗體內元素遍歷-通用方法(DevExpress 中BarManager的遍歷)

窗體內元素遍歷-通用方法(DevExpress 中BarManager的遍歷)

ger 需求 lds == eve type() arp exp .get

需求:WinForm窗體中對於各個元素進行遍歷設置。

本身因為程序絕大部分功能已經開發完畢,但是權限控制沒有追加,在後續開發中要求對窗體內各個資源的使用權限進行控制,最初各個資源並非動態添加的,所以通過數據庫和所有窗體基類配合使用的方法進行控制。

實現方案:在基類中對子窗體中的實例化控件是否顯示進行控制。

遇到問題1:DevExpress.XtraBars.BarManager 沒有繼承Control基類,所以無法使用this.Controls進行遍歷

遇到問題2:在基類中使用子類的實例化控件對象

代碼如下:

public void SearchBarManager()
        {
            Type FormType = this.GetType();
            FieldInfo[] fi = FormType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
            foreach (FieldInfo info in fi)
            {
                if (info.FieldType == typeof(DevExpress.XtraBars.BarManager))
                {
                    DevExpress.XtraBars.BarManager bar = (info.GetValue(this)) as DevExpress.XtraBars.BarManager;
                    foreach (DevExpress.XtraBars.BarItem bi in bar.Items)
                    {
                        MessageBox.Show(bi.Name);
                    }
                }

            }
        }

  

窗體內元素遍歷-通用方法(DevExpress 中BarManager的遍歷)