DevExpress控件使用經驗總結


DevExpress控件使用經驗總結

DevExpress是一個比較有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件。本文主要介紹我在使用DevExpress控件過程中,遇到或者發現的一些問題解決方案,或者也可以所示一些小的經驗總結。總體來講,使用DevExpress控件,可以獲得更高效的界面設計以及更美觀的效果。本文主要通過給出相應的例子以及相關界面效果來說明問題,希望大家能夠從中獲得好的知識和思路。

1、 應用Office2007和Office2010的界面主題

開始使用DevExpress的時候,發現程序界面效果好像沒有出現Office的樣式,只是有幾種可憐的內置效果。經過查找發現需要在入口函數里面添加幾行代碼,如下所示。

            DevExpress.UserSkins.OfficeSkins.Register();             DevExpress.UserSkins.BonusSkins.Register();             DevExpress.Skins.SkinManager.EnableFormSkins();

指定界面主題效果,可以通過代碼設置,指定主題的名稱即可。

UserLookAndFeel.Default.SetSkinStyle("Office 2010 Blue");

或者在界面中添加一個控件 DefaultLookAndFeel,設置其對應的界面效果即可實現整個設計時刻和運行時刻的界面效果,如下圖所示。

 

2、Properties屬性

DevExpress很多控件的一般屬性,會放置在該屬性下面,如ComboBox下拉列表的屬性操作如下

復制代碼
        private void InitDictItem()         {             this.txtManufacture.Properties.Items.Clear();             this.txtManufacture.Properties.Items.AddRange(DictItemUtil.GetDictByDictType( " 供貨商 "));         }
復制代碼

這是一個很豐富屬性的歸類,很多常用的屬性基本上都囊括在這里了,如果你是從傳統界面轉換過來DevExperss開發,找不着相關的屬性,盡管來這里看看。例如設置顯示的可見性、可用性、

自定義顯示格式等等。

 

3、GridView的相關操作

獲取選定行制定列的內容,用於刪除記錄的操作代碼如下

DevExpess的GridView控件,和傳統WinFrom的GridView有很大的不同,如他沒有GetSelectedRow的行集合操作,但可以通過GetSelectedRows獲取制定的行序號,通過行序號來進行操作,如要獲得指定行,制定列的內容,可以通過GetRowCellDisplayText 獲取文本或者通過GetRowCellValue獲取對應的值。

如果需要獲取當前選定行(焦點所在行)的制定列的數據,那么可以通過函數GetFocusedRowCellDisplayText("ID")來獲取。

復制代碼
        private void winGridViewPager1_OnDeleteSelected( object sender, EventArgs e)         {             if (MessageUtil.ShowYesNoAndTips( " 您確定刪除選定的記錄么? ") == DialogResult.No)             {                 return;             }
            int[] rowSelected = this.winGridViewPager1.GridView1.GetSelectedRows();             foreach ( int iRow in rowSelected)             {                 string ID = this.winGridViewPager1.GridView1.GetRowCellDisplayText(iRow, " ID ");                 BLLFactory<ItemDetail>.Instance.Delete(ID);             }             BindData();         }
復制代碼

 

為GridView行提示信息以及顯示行號,有時候為了方便數據的顯示,需要在GridView的第一列顯示該列的行信息以及行號,那么需要為GridView控件添加一個ToolTipController控件,然后實現該控件的GetActiveObjectInfo事件,在事件里面添加下面代碼以及實現GridView控件的CustomDrawRowIndicator事件即可,如下代碼所示。

復制代碼
        private void toolTipController1_GetActiveObjectInfo( object sender, DevExpress.Utils.ToolTipControllerGetActiveObjectInfoEventArgs e)         {             if (e.SelectedControl != gridControl1) return;
            ToolTipControlInfo info = null;             // Get the view at the current mouse position            GridView view = gridControl1.GetViewAt(e.ControlMousePosition) as GridView;             if (view == null) return;
            // Get the view's element information that resides at the current position            GridHitInfo hi = view.CalcHitInfo(e.ControlMousePosition);             // Display a hint for row indicator cells            if (hi.HitTest == GridHitTest.RowIndicator)             {                 // An object that uniquely identifies a row indicator cell                object o = hi.HitTest.ToString() + hi.RowHandle.ToString();                 StringBuilder sb = new StringBuilder();                 sb.AppendLine( " 行數據基本信息: ");                 foreach (GridColumn gridCol in view.Columns)                 {                     if (gridCol.Visible)                     {                         sb.AppendFormat( "     {0}:{1}\r\n ", gridCol.Caption, view.GetRowCellDisplayText(hi.RowHandle, gridCol.FieldName));                     }                 }                 info = new ToolTipControlInfo(o, sb.ToString());             }
            // Supply tooltip information if applicable, otherwise preserve default tooltip (if any)            if (info != null)             {                 e.Info = info;             }         }
復制代碼

 

復制代碼
        private void gridView1_CustomDrawRowIndicator( object sender, RowIndicatorCustomDrawEventArgs e)         {             if (ShowLineNumber)             {                 e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;                 if (e.Info.IsRowIndicator)                 {                     if (e.RowHandle >= 0)                     {                         e.Info.DisplayText = (e.RowHandle + 1).ToString();                     }                 }             }         }
復制代碼

以上雖然是使用了我的DevExpress分頁控件,不過分頁控件的內部就是使用了DevExpress的GridControl控件的。

 

4、常用布局控件。

傳統的數據編輯界面,我們一般需要添加一個Label,然后再加一個TextBox或者其他控件,而DevExpress在這方面確實下了不少功夫,引入了一個LayoutControl的控件,該控件可以在你添加一個TextBox等其他控件的時候,自動為你加入一個類似Label的控件,而且布局已經給你設計對齊好,添加幾個可以在一行中放置多列控件,對齊效果也非常好,如果是重新設計界面,省卻不少對齊以及維護Label的屬性。

另外,該布局屬性可以設置類似GroupBox的邊界效果(默認不顯示文本和邊界),也可以統一設計在該布局控件內部各種控件的效果,如ReadOnly為True的顯示如何,Enable為False的顯示如何,只需要設置一個地方,就可以統一界面效果了。總之,用起來相當的不錯。

總體來講,第一次使用DevExpress會覺得很多地方不太適應,甚至有時候找不到對應的屬性,但是當慢慢熟悉了使用該控件來開發的時候,會覺得它確實在很多地方引入了較好的理念,習慣了就覺得效率提高了不少,界面設計上也會覺得更加美觀和方便了。由於我只是在我平常開發的小例子,以及我的Winform開發框架中,應用了DevExpress控件的各種常用效果,應該還有很多常用的控件以及高級控件沒有用到,以后有繼續使用的話,會繼續記錄相應的經驗心得供大家探討。

最后附上一個我應用DevExpress控件改進過Winform開發框架的界面效果圖,里面應用到了Ribbon界面效果以及基於DevExpress控件的分頁控件(前面有介紹過使用例子),使用了分頁控件,對整個GridView的處理上,會方便很多,界面效果如下所示。

 

 

轉載自:http://www.cnblogs.com/wuhuacong/archive/2011/08/31/2161002.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM