窗體內元素遍歷-通用方法(DevExpress 中BarManager的遍歷)
阿新 • • 發佈:2017-06-30
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的遍歷)