久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

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

 控件開發(fā) 2014-04-29

1,、GridControl控件的數(shù)據(jù)顯示的樣式控制

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)
DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

如上兩圖所示,我們有時(shí)候需要控制列表訪問過的顏色變化,,或者是時(shí)間顯示格式等內(nèi)容,,這個(gè)時(shí)候設(shè)置GridView的RowCellStyle即可實(shí)現(xiàn),如下所示,。

1
this.gridView1.RowCellStyle += new DevExpress.XtraGrid.Views.Grid.RowCellStyleEventHandler(gridView1_RowCellStyle);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
        void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
        {
            if (e.Column.FieldName == "PublishType")
            {
                if (e.CellValue != null && e.CellValue.ToString() == "中介")
                {
                    e.Appearance.BackColor = Color.DeepSkyBlue;
                    e.Appearance.BackColor2 = Color.LightCyan;
                }
            }
            if (e.Column.FieldName == "PublishTime")
            {
                e.Column.DisplayFormat.FormatString = "yyyy-MM-dd HH:mm:ss";
            }
 
            if (e.Column.FieldName == "Title")
            {
                string id = this.winGridViewPager1.gridView1.GetRowCellDisplayText(e.RowHandle, "Id");
                if (historyDict.ContainsKey(id))
                {
                    e.Appearance.BackColor = Color.DeepSkyBlue;
                    e.Appearance.BackColor2 = Color.LightCyan;
                }
            }
}

2,、在LayoutControl布局中固定控件寬度

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

固定寬度后的真實(shí)效果。

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

為了使得界面統(tǒng)一性及更好的控制性,,我們一般使用LayoutControl布局控件作為我們添加控件的布局容器,,但是這個(gè)控件默認(rèn)是對(duì)其中的控件 進(jìn)行按窗口比例進(jìn)行縮放的,有些客戶就不喜歡這些特點(diǎn),,因?yàn)樗麄兊娘@示器可能是30寸的(夸張一點(diǎn)點(diǎn),,不過很多寬屏的),這樣很多輸入框就會(huì)被拉得很長(zhǎng),, 這樣小小一個(gè)輸入框,,可能有很長(zhǎng)的一段空白的距離,那樣可能真的不好看,,如下圖所示,。

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

設(shè)置固定寬度,其實(shí)不是很麻煩,,需要設(shè)置幾個(gè)屬性即可

1) 設(shè)置控件的SizeConstraintsType為DevExpress.XtraLayout.SizeConstraintsType.Custom;

2)設(shè)置控件的FillControlToClientArea 為False

3)設(shè)置控件的ControlMaxSize的大?。ū匾獣r(shí)也可以設(shè)置ControlMinSize),,設(shè)置例子如下所示。

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

3,、GridControl中的GridView內(nèi)容打印

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

由于GridView的良好封裝性,,實(shí)現(xiàn)打印的代碼很簡(jiǎn)單。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private void menu_Print_Click(object sender, EventArgs e)
{
    PrintableComponentLink link = new PrintableComponentLink(new PrintingSystem());
    link.Component = this.gridControl1;
    link.Landscape = true;
    link.PaperKind = System.Drawing.Printing.PaperKind.A3;
    link.CreateMarginalHeaderArea += new CreateAreaEventHandler(Link_CreateMarginalHeaderArea);
    link.CreateDocument();
    link.ShowPreview();
}
 
private void Link_CreateMarginalHeaderArea(object sender, CreateAreaEventArgs e)
{
    string title = string.Format("年度大體檢-({0}年度)", this.txtYear.Text);
    PageInfoBrick brick = e.Graph.DrawPageInfo(PageInfo.None, title, Color.DarkBlue,
       new RectangleF(0, 0, 100, 21), BorderSide.None);
 
    brick.LineAlignment = BrickAlignment.Center;
    brick.Alignment = BrickAlignment.Center;
    brick.AutoWidth = true;
    brick.Font = new System.Drawing.Font("宋體", 11f, FontStyle.Bold);
}

4,、設(shè)置GridView的行指示器(行頭)顯示行號(hào)

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

在我的分頁控件以及Winform開發(fā)框架很多項(xiàng)目介紹里面,,很多都顯示了行號(hào),其實(shí)這個(gè)在DevExpress中的實(shí)現(xiàn)很簡(jiǎn)單,,如果需要,,可以實(shí)現(xiàn)在自己的代碼里面。

1) 先實(shí)現(xiàn)GridView的CustomDrawRowIndicator事件,,實(shí)現(xiàn)代碼如下所示,。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void advBandedGridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
{
    e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
    if (e.Info.IsRowIndicator)
    {
        if (e.RowHandle >= 0)
        {
            e.Info.DisplayText = (e.RowHandle + 1).ToString();
        }
        else if (e.RowHandle < 0 && e.RowHandle > -1000)
        {
            e.Info.Appearance.BackColor = System.Drawing.Color.AntiqueWhite;
            e.Info.DisplayText = "G" + e.RowHandle.ToString();
        }
    }
}

2)然后設(shè)置GridView控件的IndicatorWidth為合適的寬度,如40左右則比較好,。

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

這樣設(shè)置后,,就能順利顯示行號(hào)了,是不是很方便呢,。

5,、GridView表頭多行顯示(折行),表頭及行內(nèi)容居中操作

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

在一些自定義的列表中,,我們?yōu)榱撕侠盹@示表頭的內(nèi)容,可能會(huì)要求表頭顯示的文字可以折行顯示,,然后還需要內(nèi)容居中顯示,,那么在DevExpress該如何操作呢,代碼設(shè)置如下所示,。

1
2
3
4
5
6
7
//表頭折行設(shè)置
this.gridView1.ColumnPanelRowHeight = 40;
this.gridView1.OptionsView.AllowHtmlDrawHeaders = true;
this.gridView1.Appearance.HeaderPanel.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
//表頭及行內(nèi)容居中顯示
this.gridView1.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.gridView1.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;

然后設(shè)置表頭的時(shí)候,,設(shè)置內(nèi)容使用\r\n來進(jìn)行換行,如:體重\r\n(kg)

下面是我分頁控件里面的例子設(shè)置,,供參考,。

1
2
3
4
5
6
this.winGridViewPager1.AddColumnAlias("Weight", "體重\r\n(kg)");
this.winGridViewPager1.AddColumnAlias("Pulse", "脈搏\r\n(次)");
this.winGridViewPager1.AddColumnAlias("BloodSystolic", "收縮壓");
this.winGridViewPager1.AddColumnAlias("BloodDiastolic", "舒張壓");
this.winGridViewPager1.AddColumnAlias("SightLeft", "視力\r\n(左)");
this.winGridViewPager1.AddColumnAlias("SightRight", "視力\r\n(右)");

6、控件內(nèi)容輸入問題

在客戶使用軟件的時(shí)候,,反饋說有一些數(shù)字輸入框,、日期輸入框,不支持鍵盤輸入內(nèi)容,,經(jīng)測(cè)試,,確實(shí)是存在這個(gè)問題,默認(rèn)的數(shù)字,、日期等輸入,,都要切換輸入法才可以輸入,,不能默認(rèn)就支持?jǐn)?shù)字的輸入,那么是否有辦法解決呢,,當(dāng)然辦法總是有的,。

其實(shí)只需要設(shè)置 ImeMode=Off 即可解決問題,關(guān)于這個(gè)屬性,,大家可以參考下面的介紹,。(就開發(fā)而言,記得逢數(shù)字,,日期的控件,,必須設(shè)置ImeMode=Off ,否則你的軟件使用客戶會(huì)罵娘,。

ImeMode 枚舉:指定一個(gè)值,,該值是用來確定在選定了對(duì)象時(shí)該對(duì)象的輸入法編輯器 (IME) 的狀態(tài)。 以下是微軟的解釋:

成員名稱 說明
Alpha 字母數(shù)字單字節(jié)字符 (SBC),。此設(shè)置僅對(duì)朝鮮語和日語 IME 有效,。
AlphaFull 字母數(shù)字雙字節(jié)字符。此設(shè)置僅對(duì)朝鮮語和日語 IME 有效,。
Close Disable IME 被禁用,。如果使用此設(shè)置,則用戶無法從鍵盤打開 IME,,而且 IME 浮動(dòng)窗口處于隱藏狀態(tài),。
Hangul 朝鮮文 SBC。此設(shè)置僅對(duì)朝鮮語 IME 有效,。
HangulFull 朝鮮文 DBC,。此設(shè)置僅對(duì)朝鮮語 IME 有效。
Hiragana 平假名 DBC,。此設(shè)置僅對(duì)日語 IME 有效,。
Inherit 繼承父控件的 IME 模式。
Katakana 片假名 DBC,。此設(shè)置僅對(duì)日語 IME 有效,。
KatakanaHalf 片假名 SBC。此設(shè)置僅對(duì)日語 IME 有效,。
NoControl 無(默認(rèn)),。
Off IME 已關(guān)閉。此模式指示 IME 已關(guān)閉,,這意味著該對(duì)象的行為方式與英語輸入模式相同,。 此設(shè)置僅對(duì)日語、簡(jiǎn)體中文和繁體中文 IME 有效,。
On IME 已打開,。此值指示 IME 已打開,,可以輸入中文或日語特定的字符。此設(shè)置僅對(duì)日語,、簡(jiǎn)體中文和繁體中文 IME 有效,。

7、多行表頭的實(shí)現(xiàn)

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

有時(shí)候,,我們?yōu)榱艘恍┨厥獾男枰?,要?duì)表頭進(jìn)行特別的排版,使其支持多行表頭的效果,,如上圖所示,,這樣方便對(duì)各項(xiàng)內(nèi)容進(jìn)行歸類顯示,易于閱讀,,在DevExpress中應(yīng)該如何實(shí)現(xiàn)這個(gè)效果呢,?

1)先在設(shè)計(jì)模式將普通的GridView轉(zhuǎn)換為BandedGridView或者AdvBandedGridView,這樣才能支持這種多行表頭的做法,,如下所示,。

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

2)定義一些字段,用來顯示其中的內(nèi)容,,如下圖所示,。

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

3)定義一些Band列,設(shè)置相關(guān)的屬性,,并把設(shè)計(jì)界面中的字段列表拖動(dòng)到對(duì)應(yīng)過的Band列上面,,這樣就構(gòu)成了一個(gè)Band列和字段內(nèi)容的對(duì)應(yīng)關(guān)系。

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

完成上面的綁定關(guān)系后,,記得設(shè)置GridView控件的屬性,,使其不要顯示原本的ColumnHeader等內(nèi)容。

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

設(shè)置好這些內(nèi)容,,才能合理、完美顯示出多行表頭的信息,。

8.在GridControl控件中使用SearchLookUpEdit構(gòu)建數(shù)據(jù)快速輸入

DevExpress控件開發(fā)使用經(jīng)驗(yàn)及教訓(xùn)

一個(gè)實(shí)際的案例就是門診的時(shí)候,,醫(yī)生用藥的情況,除了選擇其他內(nèi)容外,,主要的就是快速錄入藥品信息,。我們平常去大一點(diǎn) 的醫(yī)院看病,好像看到的多數(shù)操作都是這樣,。還有一種方式就是銷售人員提供的報(bào)價(jià)單,,從產(chǎn)品里面選擇信息,然后修改下價(jià)格,,這些場(chǎng)景都是很適合這樣的操作的,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(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)論公約

    類似文章 更多