一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

dev經(jīng)驗(yàn)

 quasiceo 2012-12-18

DevExpress控件使用經(jīng)驗(yàn)總結(jié)

DevExpress是一個(gè)比較有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件。本文主要介紹我在使用DevExpress控件過(guò)程中,遇到或者發(fā)現(xiàn)的一些問(wèn)題解決方案,或者也可以所示一些小的經(jīng)驗(yàn)總結(jié)??傮w來(lái)講,使用DevExpress控件,可以獲得更高效的界面設(shè)計(jì)以及更美觀的效果。本文主要通過(guò)給出相應(yīng)的例子以及相關(guān)界面效果來(lái)說(shuō)明問(wèn)題,希望大家能夠從中獲得好的知識(shí)和思路。 

1、 應(yīng)用Office2007和Office2010的界面主題

開(kāi)始使用DevExpress的時(shí)候,發(fā)現(xiàn)程序界面效果好像沒(méi)有出現(xiàn)Office的樣式,只是有幾種可憐的內(nèi)置效果。經(jīng)過(guò)查找發(fā)現(xiàn)需要在入口函數(shù)里面添加幾行代碼,如下所示。

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

指定界面主題效果,可以通過(guò)代碼設(shè)置,指定主題的名稱即可。

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

或者在界面中添加一個(gè)控件 DefaultLookAndFeel,設(shè)置其對(duì)應(yīng)的界面效果即可實(shí)現(xiàn)整個(gè)設(shè)計(jì)時(shí)刻和運(yùn)行時(shí)刻的界面效果,如下圖所示。

 

 

2、Properties屬性

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

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

這是一個(gè)很豐富屬性的歸類,很多常用的屬性基本上都囊括在這里了,如果你是從傳統(tǒng)界面轉(zhuǎn)換過(guò)來(lái)DevExperss開(kāi)發(fā),找不著相關(guān)的屬性,盡管來(lái)這里看看。例如設(shè)置顯示的可見(jiàn)性、可用性、

 自定義顯示格式等等。

 

3、GridView的相關(guān)操作

獲取選定行制定列的內(nèi)容,用于刪除記錄的操作代碼如下

DevExpess的GridView控件,和傳統(tǒng)WinFrom的GridView有很大的不同,如他沒(méi)有GetSelectedRow的行集合操作,但可以通過(guò)GetSelectedRows獲取制定的行序號(hào),通過(guò)行序號(hào)來(lái)進(jìn)行操作,如要獲得指定行,制定列的內(nèi)容,可以通過(guò)GetRowCellDisplayText 獲取文本或者通過(guò)GetRowCellValue獲取對(duì)應(yīng)的值。

如果需要獲取當(dāng)前選定行(焦點(diǎn)所在行)的制定列的數(shù)據(jù),那么可以通過(guò)函數(shù)GetFocusedRowCellDisplayText("ID")來(lái)獲取。

復(fù)制代碼
復(fù)制代碼
復(fù)制代碼
        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();
        } 
復(fù)制代碼
復(fù)制代碼
復(fù)制代碼

 

為GridView行提示信息以及顯示行號(hào),有時(shí)候?yàn)榱朔奖銛?shù)據(jù)的顯示,需要在GridView的第一列顯示該列的行信息以及行號(hào),那么需要為GridView控件添加一個(gè)ToolTipController控件,然后實(shí)現(xiàn)該控件的GetActiveObjectInfo事件,在事件里面添加下面代碼以及實(shí)現(xiàn)GridView控件的CustomDrawRowIndicator事件即可,如下代碼所示。

復(fù)制代碼
復(fù)制代碼
復(fù)制代碼
        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 == nullreturn;

            //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("行數(shù)據(jù)基本信息:");
                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;
            }
        } 
復(fù)制代碼
復(fù)制代碼
復(fù)制代碼

 

復(fù)制代碼
復(fù)制代碼
復(fù)制代碼
         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();
                    }
                }
            }
        }
復(fù)制代碼
復(fù)制代碼
復(fù)制代碼

 

以上雖然是使用了我的DevExpress分頁(yè)控件,不過(guò)分頁(yè)控件的內(nèi)部就是使用了DevExpress的GridControl控件的。

 

 4、常用布局控件。

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

另外,該布局屬性可以設(shè)置類似GroupBox的邊界效果(默認(rèn)不顯示文本和邊界),也可以統(tǒng)一設(shè)計(jì)在該布局控件內(nèi)部各種控件的效果,如ReadOnly為T(mén)rue的顯示如何,Enable為False的顯示如何,只需要設(shè)置一個(gè)地方,就可以統(tǒng)一界面效果了??傊?,用起來(lái)相當(dāng)?shù)牟诲e(cuò)。

 

 

 總體來(lái)講,第一次使用DevExpress會(huì)覺(jué)得很多地方不太適應(yīng),甚至有時(shí)候找不到對(duì)應(yīng)的屬性,但是當(dāng)慢慢熟悉了使用該控件來(lái)開(kāi)發(fā)的時(shí)候,會(huì)覺(jué)得它確實(shí)在很多地方引入了較好的理念,習(xí)慣了就覺(jué)得效率提高了不少,界面設(shè)計(jì)上也會(huì)覺(jué)得更加美觀和方便了。由于我只是在我平常開(kāi)發(fā)的小例子,以及我的Winform開(kāi)發(fā)框架中,應(yīng)用了DevExpress控件的各種常用效果,應(yīng)該還有很多常用的控件以及高級(jí)控件沒(méi)有用到,以后有繼續(xù)使用的話,會(huì)繼續(xù)記錄相應(yīng)的經(jīng)驗(yàn)心得供大家探討。

最后附上一個(gè)我應(yīng)用DevExpress控件改進(jìn)過(guò)Winform開(kāi)發(fā)框架的界面效果圖,里面應(yīng)用到了Ribbon界面效果以及基于DevExpress控件的分頁(yè)控件(前面有介紹過(guò)使用例子),使用了分頁(yè)控件,對(duì)整個(gè)GridView的處理上,會(huì)方便很多,界面效果如下所示。

 

 

主要研究技術(shù):代碼生成工具、Visio二次開(kāi)發(fā)、送水管理軟件等共享軟件開(kāi)發(fā)
專注于Winform開(kāi)發(fā)框架、WCF開(kāi)發(fā)框架的研究及應(yīng)用。
  轉(zhuǎn)載請(qǐng)注明出處:
撰寫(xiě)人:伍華聰  http://www. 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    亚洲欧美日本国产有色| 超碰在线免费公开中国黄片| 日本一二三区不卡免费| 婷婷伊人综合中文字幕| 欧洲一级片一区二区三区| 在线观看那种视频你懂的| 果冻传媒精选麻豆白晶晶| 国产色一区二区三区精品视频| 久久永久免费一区二区| 日韩午夜福利高清在线观看| 国产欧美精品对白性色| 亚洲欧美日产综合在线网| 欧美综合色婷婷欧美激情| 丰满人妻一二三区av| 午夜视频成人在线观看| 午夜精品国产一区在线观看| 国产麻豆视频一二三区| 沐浴偷拍一区二区视频| 国产内射在线激情一区| 麻豆果冻传媒一二三区| 欧美又大又黄刺激视频| 国产精品流白浆无遮挡| 成年午夜在线免费视频| 99久久精品国产麻豆| 久久精品国产亚洲av麻豆尤物| 中文日韩精品视频在线| 神马午夜福利一区二区| 午夜国产福利在线播放| 国产又爽又猛又粗又色对黄| 一个人的久久精彩视频| 亚洲少妇人妻一区二区| 中文字幕免费观看亚洲视频| 国产精品九九九一区二区 | 大香蕉久久精品一区二区字幕 | 情一色一区二区三区四| 国产精品亚洲精品亚洲| 污污黄黄的成年亚洲毛片| 日本本亚洲三级在线播放| 国产日本欧美特黄在线观看| 国产毛片不卡视频在线| 99精品人妻少妇一区二区人人妻|