• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      DataGridView格式化代碼自動生成方法

      2019-10-08 07:45馬玉春劉雍陳德祥
      軟件 2019年1期
      關(guān)鍵詞:控件代碼寬度

      馬玉春 劉雍 陳德祥

      摘? 要: DataGridView控件可以很方便地以非綁定方式顯示數(shù)據(jù),也可以綁定到數(shù)據(jù)表用來顯示和修改數(shù)據(jù),并可以將數(shù)據(jù)直接復(fù)制粘貼到Excel表格中。根據(jù)DataGridView的屬性和方法,設(shè)計(jì)了一種格式化代碼的自動生成方法,一次性將DataGridView界面調(diào)整到位。

      關(guān)鍵詞: DataGridView;代碼;自動

      中圖分類號: TP311. 56? ? 文獻(xiàn)標(biāo)識碼: A? ? DOI:10.3969/j.issn.1003-6970.2019.01.003

      【Abstract】: DataGridView can display the unbound data easily, and the bound data can be displayed with modification quickly, and both of them can be copied into Excel table. According to the attributes and methods of DataGridView, a method which used to adjust user interface only once of generating formatted code automatically is proposed.

      【Key words】: DataGridView; Code; Automatically

      0? 引言

      DataGridView控件界面友好,用來方便地顯示綁定和非綁定數(shù)據(jù),可以直接修改表格中的數(shù)據(jù)并保存到數(shù)據(jù)庫[1]。但是,在調(diào)整用戶界面的時候,需要經(jīng)過多次反復(fù)。本文從DataGridView的特點(diǎn)和屬性出發(fā),先設(shè)計(jì)基本的界面風(fēng)格,然后通過手動調(diào)整行高和各列的列寬,最后通過代碼進(jìn)行計(jì)算,輸出各列的列寬、行高和DataGridView對象(假設(shè)對象名為dgv)的寬度和高度,將這些代碼放入窗體的裝載方法中或者用來設(shè)置其屬性。文獻(xiàn)[2]實(shí)現(xiàn)了一個通用的Access數(shù)據(jù)庫類,本文利用此類填充dgv的數(shù)據(jù)集(通過屬性DataSource),從而完成一個DataGridView模板。

      1? 外觀屬性

      DataGridView的外觀屬性用來設(shè)置其可視化的外觀,其中GridColor 屬性用于設(shè)置網(wǎng)格線的顏色。CellBorderStyle屬性用于設(shè)置普通單元格的邊框樣式,通過該屬性可以確定只顯示水平網(wǎng)格線(Single Horizontal)或垂直網(wǎng)格線(SingleVertical)。Column HeadersBorderStyle 屬性用于設(shè)置列標(biāo)題的邊框樣式,RowHeadersBorderStyle屬性用于設(shè)置行標(biāo)題的邊框樣式[3],這些屬性一般使用默認(rèn)值。

      RowHeadersVisible 屬性表示行標(biāo)題是否可見,ColumnHeadersVisible 屬性表示列標(biāo)題是否可見,一般使用默認(rèn)值True. ColumnHeadersHeight屬性表示列標(biāo)題所在行的高度,一般用像素表示。

      AlternatingRowsDefaultCellStyle屬性用于定義交替行樣式。在設(shè)計(jì)器中選擇DataGridView 控件,在“屬性”窗口中,單擊AlternatingRows DefaultCellStyle屬性旁的省略號按鈕,在“Cell Style 生成器”對話框中,通過設(shè)置屬性定義樣式,再使用“預(yù)覽”窗格確認(rèn)選擇[4]。這樣,用戶所指定的樣式將用于控件中顯示的每一個交替行(從第二行開始)。若要定義其余各行的樣式,只要使用 RowsDefaultCellStyle屬性重復(fù)以上兩個步驟即可。

      在調(diào)整DataGridView窗體界面前,一般先設(shè)計(jì)好符合用戶需求的外觀屬性。而外觀屬性Row Template是行模板屬性,其中的 Height 子屬性是整個數(shù)據(jù)行的行高屬性,即默認(rèn)情況下,Height 值是每一行的高度。RowTemplate屬性值將在在程序運(yùn)行時進(jìn)行手動調(diào)整,然后通過調(diào)試命令在即時窗口中自動輸出。

      2? 布局屬性

      常用且需要修改的布局屬性主要包括Location 屬性和Size屬性,前者規(guī)定了DataGridView控件的左上角的位置,后者規(guī)定了控件的大小(寬度Width和高度Height)。確定Location比較簡單,只要拖拽控件,放到一個合適的起始位置即可,這樣即可確定Location了。但是,Size屬性的確定通常需要考慮多種因素[5]。

      填充數(shù)據(jù)后的DataGridView控件包括列標(biāo)頭所在的行和數(shù)據(jù)記錄所在的行。列標(biāo)頭所在行的高度(ColumnHeadersHeight屬性)與所要顯示的數(shù)據(jù)行的高度(DataGridView控件的Rows集合的Height 值)累加,就是 DataGridView 控件的Size屬性的 Height值(這里不考慮水平滾動條占據(jù)的行高)。如果Height值設(shè)置不合理,有可能在DataGridView 控件的底部出現(xiàn)半行記錄,這樣就顯得不美觀了。

      DataGridView控件行標(biāo)頭所在的列,其寬度通過RowHeadersWidth屬性來表示。DataGridView控件的寬度Width為RowHeadersWidth與各數(shù)據(jù)列寬度(DataGridView控件的Columns集合的Width值)之和,還要加上垂直滾動條的寬度,因?yàn)橐话銛?shù)據(jù)庫的記錄數(shù)較多,需要通過垂直滾動條來瀏覽記錄[6]。

      ScrollBars 屬性指明滾動條的需求情況,默認(rèn)為 Both,表示需要水平(Horizontal)和垂直(Vertical)滾動條,一般不更改此默認(rèn)值。但是,只要DataGridView控件的寬度足夠容納所有列(行標(biāo)頭列和數(shù)據(jù)列)和垂直滾動條,水平滾動條就不可見;同理,只要DataGridView 控件的高度足夠顯示所有記錄行,垂直滾動條就不可見。

      布局屬性值將在程序運(yùn)行時進(jìn)行手動調(diào)整,然后通過調(diào)試命令在即時窗口中自動輸出。

      3? 行為屬性

      行為屬性主要控制用戶的行為,即是否允許或禁止某些操作,這些屬性一般是布爾類型。AllowUserToAddRows獲取或設(shè)置一個值,該值指示是否向用戶顯示添加行的選項(xiàng),默認(rèn)值為True;如果只是讓用戶查看,不允許用戶修改,則設(shè)置為 False。AllowUserToDeleteRows獲取或設(shè)置一個值,該值指示是否允許用戶從DataGridView中刪除行。AllowUserToOrderColumns獲取或設(shè)置一個值,該值指示是否允許通過手動對列重新排序。

      AllowUserToResizeColumns獲取或設(shè)置一個值,該值指示用戶是否可以調(diào)整列的大小;Allow UserToResizeRows獲取或設(shè)置一個值,該值指示用戶是否可以調(diào)整行的大小。在程序設(shè)計(jì)與調(diào)試期間,這兩個值一般設(shè)置為True,用以調(diào)整大小,確定美觀的具體數(shù)值。程序通過調(diào)試后,一般設(shè)置為 False,以免用戶將程序界面弄亂[7]。

      ColumnHeadersHeightSizeMode獲取或設(shè)置一個值,該值指示是否可以調(diào)整列標(biāo)題的高度,以及它是由用戶調(diào)整還是根據(jù)標(biāo)題的內(nèi)容自動調(diào)整。AutoSize表示自動調(diào)整(默認(rèn)值),EnableResizing 表示允許用戶調(diào)整,DisableResizing表示禁止用戶調(diào)整。一般情況下,采用默認(rèn)值即可。如果需要精確控制界面的美觀,可以在程序設(shè)計(jì)與調(diào)試階段將該屬性設(shè)置為EnableResizing,待確定好列標(biāo)題的合適高度后,再將該屬性設(shè)置為DisableResizing即可。

      4? 代碼自動生成

      為了方便實(shí)現(xiàn)代碼自動生成,設(shè)置一個布爾變量debugEnable,在調(diào)試界面的階段,將該值設(shè)置為True,允許上一節(jié)的行為屬性,這樣可以手動調(diào)整界面;在界面設(shè)計(jì)完成后,禁止行為屬性,不能手動調(diào)整界面。將窗體盡量拉大,也使得dgv足夠大,然后運(yùn)行程序,與使用 Microsoft Office Excel 工具類似的方法去調(diào)整dgv的列寬與行高。調(diào)整完畢,如對界面滿意,可點(diǎn)擊有效記錄的有效單元格。此時,產(chǎn)生一個CellClick事件,在該事件中輸出代碼和屬性值[8]。

      在dgv的CellClick事件處理程序中,變量dgvWidth是dgv的寬度,變量dgvHeight是dgv的高度,變量nDisplayRows是需要在dgv中顯示的記錄行數(shù)。第2節(jié)布局屬性中已經(jīng)說明了Data GridView控件的Width和Height的計(jì)算方法。DataGridView控件的BorderStyle屬性默認(rèn)為FixedSingle,在這種情況下,其寬度需要加2個像素進(jìn)行調(diào)整;如果BorderStyle屬性的值設(shè)置為Fixed3D,該值為4;如果BorderStyle屬性的值設(shè)置為 None,DataGridView 控件的寬度也不需要調(diào)整了[9]。程序先輸出行標(biāo)頭與列標(biāo)頭的高度與寬度。dgv.ColumnCount 返回 dgv 中的數(shù)據(jù)列數(shù),在一個For循環(huán)中輸出各數(shù)據(jù)列的寬度,并完成數(shù)據(jù)列寬度的累加。SystemInformation. VerticalScrollBarWidth為垂直滾動條的寬度。最后輸出需要在設(shè)計(jì)時更改的屬性(前面加上注釋符號)。以文獻(xiàn)[10]中的“基于TCP協(xié)議的計(jì)算機(jī)監(jiān)控系統(tǒng)測試軟件”為例,輸出代碼如下所示。

      關(guān)閉應(yīng)用程序,在設(shè)計(jì)時根據(jù)示例代碼最后三行修改dgv的相應(yīng)屬性值,將其余代碼復(fù)制到窗體裝載方法中,禁用行為屬性。由于dgv的大小已經(jīng)確定,此時可以調(diào)整dgv的右側(cè)和底端的邊界。重新運(yùn)行程序,界面如圖1所示,dgv底部沒有出現(xiàn)被切割的行,橫向也無多余像素,整個界面完整美觀,而且一次調(diào)整到位。

      5? 結(jié)束語

      DataGridView控件使用方便,界面美觀,深得編程人員和用戶的喜愛。但是,其界面調(diào)整比較繁瑣。本文通過對DataGridView的深入學(xué)習(xí),提出了一種界面代碼自動生成方法,提高了編程效率。修改界面數(shù)據(jù)后,如何更新后臺數(shù)據(jù),可以調(diào)用文獻(xiàn)[10]中提供的方法。

      參考文獻(xiàn)

      朱玉艷, 張慧. DataGridView控件數(shù)據(jù)導(dǎo)入/導(dǎo)出Excel表格[J]. 電腦知識與技術(shù), 2017, 13(19): 4-5

      馬玉春. 基于 Visual Basic 2008的Access數(shù)據(jù)庫類的設(shè)計(jì)[J]. 軟件. 2012, 33(6): 41-43+47

      趙睿. 針對Datagridview控件裝載數(shù)據(jù)時發(fā)生的錯誤及其解決辦法——以GNSS軟件控制點(diǎn)編輯界面為例[J]. 電子技術(shù)與軟件工程, 2018(08): 70-71.

      黃宇健, 劉宏韜. Android項(xiàng)目開發(fā)范例大全[M]. 北京: 中國鐵道出版社, 2012. 5

      呂媛媛, 李可. 移動端應(yīng)用設(shè)計(jì)中的響應(yīng)式實(shí)現(xiàn)方法[J]. 軟件, 2016, 37(02): 107-109.

      岳立言, 歐陽昇, 翟寶蓉. 嵌入式Linux遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與開發(fā)[J]. 軟件, 2018, 39(06): 20-22.

      陳佳, 李樹強(qiáng), 谷靈康. Android移動開發(fā)[M]. 北京: 人民郵電出版社, 2016. 5

      姜海嵐, 程琳. 雙項(xiàng)目教學(xué)在軟件專業(yè)課程中的實(shí)踐——以《Android移動應(yīng)用開發(fā)》課程為例[J]. 電腦知識與技術(shù), 2018, 14(12): 114-115.

      劉雍, 汪文彬, 馬玉春. Android環(huán)境下的數(shù)據(jù)編碼與處理技術(shù)[J]. 電腦編程技巧與維護(hù), 2018(09): 71-74+107.

      馬玉春. 計(jì)算機(jī)監(jiān)控系統(tǒng)的仿真開發(fā)[M]. 北京: 國防工業(yè)出版社, 2015. 2

      猜你喜歡
      控件代碼寬度
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      紅細(xì)胞分布寬度與血栓的關(guān)系
      ASP.NET服務(wù)器端驗(yàn)證控件的使用
      Spreadsheet控件在Delphi數(shù)據(jù)庫系統(tǒng)中的編程與應(yīng)用
      读书| 中阳县| 边坝县| 武山县| 太谷县| 静乐县| 凌源市| 中牟县| 达州市| 镇雄县| 东乌珠穆沁旗| 成都市| 韩城市| 衡水市| 巴彦淖尔市| 曲阜市| 庆安县| 浦东新区| 漳平市| 济南市| 上虞市| 依兰县| 丰镇市| 张家口市| 博客| 吉木乃县| 玛沁县| 大姚县| 华宁县| 曲松县| 合作市| 临沧市| 改则县| 金川县| 玉林市| 普兰店市| 海原县| 义马市| 车险| 明溪县| 泾源县|