版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、我的學(xué)習(xí)計(jì)劃本節(jié)介紹一下本節(jié)介紹一下Windows窗體設(shè)計(jì)中的一些概念和原則。窗體設(shè)計(jì)中的一些概念和原則。控件的名稱控件的名稱當(dāng)開發(fā)人員在窗體中新增一個(gè)控件時(shí),系統(tǒng)會(huì)給這個(gè)控件設(shè)置默認(rèn)名稱,比如對于當(dāng)開發(fā)人員在窗體中新增一個(gè)控件時(shí),系統(tǒng)會(huì)給這個(gè)控件設(shè)置默認(rèn)名稱,比如對于Label控件,其默控件,其默認(rèn)名稱可能為認(rèn)名稱可能為lable1、label2等,對于等,對于TextBox控件其默認(rèn)名稱可能為控件其默認(rèn)名稱可能為textBox1、t
2、extBox2等等。等等。如下圖所示,筆者設(shè)計(jì)了一個(gè)如下圖所示,筆者設(shè)計(jì)了一個(gè)“用戶信息用戶信息”窗體,在默認(rèn)情況下,各個(gè)控件的名稱如下圖所示。窗體,在默認(rèn)情況下,各個(gè)控件的名稱如下圖所示。這是一種非常糟糕的窗體設(shè)計(jì)結(jié)果。在編寫該窗體的這是一種非常糟糕的窗體設(shè)計(jì)結(jié)果。在編寫該窗體的C#代碼時(shí),由于無法同時(shí)看到窗體設(shè)計(jì)界面,因此代碼時(shí),由于無法同時(shí)看到窗體設(shè)計(jì)界面,因此很難記下各種控件的名稱及其功能。當(dāng)窗體控件比較多時(shí),此時(shí)的程序代碼的編
3、寫和維護(hù)時(shí)相當(dāng)困難的。很難記下各種控件的名稱及其功能。當(dāng)窗體控件比較多時(shí),此時(shí)的程序代碼的編寫和維護(hù)時(shí)相當(dāng)困難的。[袁永福版權(quán)所有袁永福版權(quán)所有]因此開發(fā)人員應(yīng)當(dāng)養(yǎng)成在窗體上新建控件就立即修改控件名稱的習(xí)慣。這樣能有效的改進(jìn)軟件的用戶因此開發(fā)人員應(yīng)當(dāng)養(yǎng)成在窗體上新建控件就立即修改控件名稱的習(xí)慣。這樣能有效的改進(jìn)軟件的用戶界面的設(shè)計(jì)質(zhì)量,也是窗體后臺(tái)代碼高質(zhì)量的基礎(chǔ)。對于界面的設(shè)計(jì)質(zhì)量,也是窗體后臺(tái)代碼高質(zhì)量的基礎(chǔ)。對于Label控件,由
4、于基本上不參與編程,只是在用控件,由于基本上不參與編程,只是在用戶界面上顯示一段不可改變的靜態(tài)文本,因此可以不設(shè)置戶界面上顯示一段不可改變的靜態(tài)文本,因此可以不設(shè)置Label控件的名稱,但當(dāng)在少數(shù)情況下,當(dāng)窗體控件的名稱,但當(dāng)在少數(shù)情況下,當(dāng)窗體后臺(tái)代碼需要操作后臺(tái)代碼需要操作Label控件的文本等屬性值時(shí),為了提高代碼的質(zhì)量也應(yīng)當(dāng)修改控件的文本等屬性值時(shí),為了提高代碼的質(zhì)量也應(yīng)當(dāng)修改Label控件的名稱。比控件的名稱。比如對于下面這個(gè)
5、窗體,各個(gè)數(shù)據(jù)輸入控件的名稱設(shè)置如下。如對于下面這個(gè)窗體,各個(gè)數(shù)據(jù)輸入控件的名稱設(shè)置如下。跟代碼變量命名規(guī)則類型,窗體控件也有命名規(guī)則,業(yè)界主流的控件命名規(guī)則可能有多種,各種規(guī)則之間跟代碼變量命名規(guī)則類型,窗體控件也有命名規(guī)則,業(yè)界主流的控件命名規(guī)則可能有多種,各種規(guī)則之間差別不大,筆者采用的命名規(guī)則大致如下差別不大,筆者采用的命名規(guī)則大致如下[袁永福版權(quán)所有袁永福版權(quán)所有]控件名稱一般為表示控件類型的前綴加上表示控件作用的字符組成。常
6、用控件類型和前綴對應(yīng)關(guān)系如控件名稱一般為表示控件類型的前綴加上表示控件作用的字符組成。常用控件類型和前綴對應(yīng)關(guān)系如下表所示下表所示控件類型控件類型前綴前綴Button按鈕按鈕btnCheckBox復(fù)選框復(fù)選框chkColumnHeader視圖列表頭視圖列表頭colComboBox組合框組合框cboContextMenu快捷菜單快捷菜單ctmDataGrid數(shù)據(jù)網(wǎng)格控件數(shù)據(jù)網(wǎng)格控件dgDataGridView數(shù)據(jù)網(wǎng)格視圖控件數(shù)據(jù)網(wǎng)格視圖控
7、件dgvDateTimePicker時(shí)間輸入框時(shí)間輸入框dtpDomainUpDown數(shù)值框數(shù)值框dudFm窗體窗體frmGroupBox組合框組合框grpHscrollBar水平滾動(dòng)條水平滾動(dòng)條hsbImageList圖標(biāo)列表圖標(biāo)列表imgLabel文本標(biāo)簽文本標(biāo)簽lblLinkLabel帶鏈接的文本標(biāo)簽帶鏈接的文本標(biāo)簽lblListBox列表框列表框lstListView視圖列表視圖列表lvwMenu菜單菜單menuMenuItem
8、菜單項(xiàng)菜單項(xiàng)menuNumericUpDown數(shù)值框數(shù)值框nud發(fā)中還是按照具體功能需求來安排輸入焦點(diǎn)切換順序。發(fā)中還是按照具體功能需求來安排輸入焦點(diǎn)切換順序。在設(shè)置各個(gè)控件的在設(shè)置各個(gè)控件的TabIndex屬性值時(shí)不應(yīng)設(shè)置為連續(xù)的值,比如設(shè)置第一個(gè)控件的屬性值時(shí)不應(yīng)設(shè)置為連續(xù)的值,比如設(shè)置第一個(gè)控件的TabIndex屬性值屬性值為1,第二個(gè)控件為,第二個(gè)控件為2,第三個(gè)控件為,第三個(gè)控件為3,等等等。采用這種設(shè)置時(shí),當(dāng)未來在輸入焦點(diǎn)順
9、序中插入新的,等等等。采用這種設(shè)置時(shí),當(dāng)未來在輸入焦點(diǎn)順序中插入新的控件,則會(huì)需要修改大量的控件的控件,則會(huì)需要修改大量的控件的TabIndex屬性值。為此筆者建議輸入的各個(gè)控件的屬性值。為此筆者建議輸入的各個(gè)控件的TabIndex屬性值屬性值不聯(lián)系,比如有不聯(lián)系,比如有10的間隔,此時(shí)可以設(shè)置第一個(gè)控件的的間隔,此時(shí)可以設(shè)置第一個(gè)控件的TabIndex屬性值為屬性值為10,第二個(gè)控件為,第二個(gè)控件為20,第三,第三個(gè)控件為個(gè)控件為30
10、,等等等。這樣就為未來插入新的控件留下,等等等。這樣就為未來插入新的控件留下TabIndex順序的空間。如下圖所示順序的空間。如下圖所示在這個(gè)在這個(gè)“用戶信息用戶信息”窗體設(shè)計(jì)的例窗體設(shè)計(jì)的例[袁永福版權(quán)所有袁永福版權(quán)所有]子中,當(dāng)該窗體運(yùn)行顯示后,用戶可以按下子中,當(dāng)該窗體運(yùn)行顯示后,用戶可以按下Tab鍵從左鍵從左到右從上到下的切換焦點(diǎn)。到右從上到下的切換焦點(diǎn)。有些控件并不能接受輸入焦點(diǎn),比如有些控件并不能接受輸入焦點(diǎn),比如Label
11、控件,但仍然需要為這類控件設(shè)置合適的控件,但仍然需要為這類控件設(shè)置合適的TabIndex屬性值。屬性值。因?yàn)橐驗(yàn)長abel控件雖然不能接受輸入焦點(diǎn),但仍然能接受快捷鍵,比如在控件雖然不能接受輸入焦點(diǎn),但仍然能接受快捷鍵,比如在“用戶信息用戶信息”的窗體設(shè)計(jì)中,筆者設(shè)的窗體設(shè)計(jì)中,筆者設(shè)置第一個(gè)置第一個(gè)Label控件的文本為控件的文本為“姓名姓名(&N):”,則程序運(yùn)行后顯示該窗體時(shí),用戶按下,則程序運(yùn)行后顯示該窗體時(shí),用戶按下“AltN
12、”組合鍵時(shí),組合鍵時(shí),Label控件就感應(yīng)到快捷鍵并試圖設(shè)置輸入焦點(diǎn)到自己,由于控件就感應(yīng)到快捷鍵并試圖設(shè)置輸入焦點(diǎn)到自己,由于Label控件不能接受輸入焦點(diǎn),因此系統(tǒng)就控件不能接受輸入焦點(diǎn),因此系統(tǒng)就會(huì)將輸入焦點(diǎn)自動(dòng)切換到會(huì)將輸入焦點(diǎn)自動(dòng)切換到Label控件的下一個(gè)焦點(diǎn)順序的控件上。也就是控件的下一個(gè)焦點(diǎn)順序的控件上。也就是TabIndex值為值為20的文本框上。的文本框上。這樣用戶就使用快捷鍵這樣用戶就使用快捷鍵“AltU”就能快速
13、切換焦點(diǎn)到就能快速切換焦點(diǎn)到“姓名姓名”文本框了。文本框了。當(dāng)用戶界面上數(shù)據(jù)輸入域很多時(shí),這種快速切換輸入焦點(diǎn)的功能是很人性化的,方便用戶使用純鍵盤當(dāng)用戶界面上數(shù)據(jù)輸入域很多時(shí),這種快速切換輸入焦點(diǎn)的功能是很人性化的,方便用戶使用純鍵盤操作來高速輸入和修改數(shù)據(jù),顯得用戶界面做的很專業(yè)。若沒有這種功能,則用戶需要頻繁的切換鼠標(biāo)和操作來高速輸入和修改數(shù)據(jù),顯得用戶界面做的很專業(yè)。若沒有這種功能,則用戶需要頻繁的切換鼠標(biāo)和鍵盤來輸入數(shù)據(jù),大大
14、拖累的操作速度。鍵盤來輸入數(shù)據(jù),大大拖累的操作速度。商業(yè)程序的用戶界面要求比較高,因?yàn)槭褂谜呖赡芎脦啄晏焯烀鎸ο嗤挠脩艚缑妫塾?jì)下來會(huì)重復(fù)商業(yè)程序的用戶界面要求比較高,因?yàn)槭褂谜呖赡芎脦啄晏焯烀鎸ο嗤挠脩艚缑妫塾?jì)下來會(huì)重復(fù)進(jìn)行幾萬次操作,此時(shí)用戶界面需要耐看耐用,這需要在很多細(xì)節(jié)上做好功夫,其中設(shè)置各進(jìn)行幾萬次操作,此時(shí)用戶界面需要耐看耐用,這需要在很多細(xì)節(jié)上做好功夫,其中設(shè)置各[袁永福版權(quán)袁永福版權(quán)所有所有]個(gè)控件的個(gè)控件的Ta
15、bIndex屬性值就是一個(gè)基礎(chǔ)工作,必須花點(diǎn)心思做好。屬性值就是一個(gè)基礎(chǔ)工作,必須花點(diǎn)心思做好。ZIndex在WinFm窗體設(shè)計(jì)中有一個(gè)窗體設(shè)計(jì)中有一個(gè)ZIndex的概念。窗體布局是采用絕對坐標(biāo)方式的,每一個(gè)控件都有的概念。窗體布局是采用絕對坐標(biāo)方式的,每一個(gè)控件都有Left和Right屬性用于確定控件的左上角在窗體中的屬性用于確定控件的左上角在窗體中的XY坐標(biāo)。坐標(biāo)。當(dāng)窗體有多個(gè)控件時(shí),控件之間可能存在相互重疊的現(xiàn)象,這類似圖像處理中
16、層的概念。也就是說一當(dāng)窗體有多個(gè)控件時(shí),控件之間可能存在相互重疊的現(xiàn)象,這類似圖像處理中層的概念。也就是說一個(gè)控件單獨(dú)的占有一個(gè)控件布局層,多個(gè)控件就會(huì)有多個(gè)布局層的疊加,而越靠近窗體的控件就越容易被個(gè)控件單獨(dú)的占有一個(gè)控件布局層,多個(gè)控件就會(huì)有多個(gè)布局層的疊加,而越靠近窗體的控件就越容易被覆蓋,于是從窗體開始計(jì)算,每個(gè)控件布局層都有一個(gè)從覆蓋,于是從窗體開始計(jì)算,每個(gè)控件布局層都有一個(gè)從0開始計(jì)算的序號(hào),這個(gè)序號(hào)就是開始計(jì)算的序號(hào),這
17、個(gè)序號(hào)就是ZIndex。從另外一種方式理解,窗體上的控件布局是不僅僅是從另外一種方式理解,窗體上的控件布局是不僅僅是XY坐標(biāo)系那種二維的,而是三維的,第三維就坐標(biāo)系那種二維的,而是三維的,第三維就是Z坐標(biāo)軸,它是從窗體向用戶延伸的,控件是分布在窗體和用戶之間。此時(shí)可以說用戶是俯看用戶界坐標(biāo)軸,它是從窗體向用戶延伸的,控件是分布在窗體和用戶之間。此時(shí)可以說用戶是俯看用戶界面,若不注意是不會(huì)感覺到第三維的存在。而且控件在第三維中的坐標(biāo)值就是
18、面,若不注意是不會(huì)感覺到第三維的存在。而且控件在第三維中的坐標(biāo)值就是ZIndex,這個(gè)值是從,這個(gè)值是從0開始的,不會(huì)重復(fù);始的,不會(huì)重復(fù);ZIndex值大的控件可以覆蓋掉值小的控件。值大的控件可以覆蓋掉值小的控件。我們還可以從第三種方式看我們還可以從第三種方式看ZIndex值,窗體對象有一個(gè)值,窗體對象有一個(gè)Controls的屬性,該屬性值可以看做一個(gè)控的屬性,該屬性值可以看做一個(gè)控件數(shù)組,窗體上所有的控件都在這個(gè)數(shù)組中。系統(tǒng)創(chuàng)建窗體
19、時(shí),是從這個(gè)數(shù)組逆向遍歷獲得控件對象,然件數(shù)組,窗體上所有的控件都在這個(gè)數(shù)組中。系統(tǒng)創(chuàng)建窗體時(shí),是從這個(gè)數(shù)組逆向遍歷獲得控件對象,然后依次放置在窗體上,很顯然在數(shù)組中靠前的控件可以覆蓋掉靠后的控件,于是控件在這個(gè)數(shù)組中的逆向后依次放置在窗體上,很顯然在數(shù)組中靠前的控件可以覆蓋掉靠后的控件,于是控件在這個(gè)數(shù)組中的逆向序號(hào)也可以看做序號(hào)也可以看做ZIndex值。值。實(shí)際上其他軟件開發(fā)技術(shù)中也有實(shí)際上其他軟件開發(fā)技術(shù)中也有ZIndex屬性,比
20、如屬性,比如VB,還有,還有Web開發(fā)中才開發(fā)中才CSS樣式也支持樣式也支持ZIndex屬性值。屬性值。ZIndex與其他控件相關(guān),因此控件本身不會(huì)有與其他控件相關(guān),因此控件本身不會(huì)有ZIndex屬性,而且根據(jù)控件在窗體中的布局動(dòng)態(tài)的計(jì)屬性,而且根據(jù)控件在窗體中的布局動(dòng)態(tài)的計(jì)算出來的。算出來的。在的窗體設(shè)計(jì)器中,不能直接設(shè)置控件的的窗體設(shè)計(jì)器中,不能直接設(shè)置控件的ZIndex值,但可以使用布局工具條上的值,但可以使用布局工具條上的“置于
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三層架構(gòu)和mvc資料整合
- c#實(shí)驗(yàn)中三層架構(gòu)訪問數(shù)據(jù)庫出現(xiàn)的無法訪問問題解決方法
- 三層架構(gòu)之系統(tǒng)登陸實(shí)例
- 基于三層架構(gòu)的門診收費(fèi)系統(tǒng).pdf
- 基于三層架構(gòu)的校園辦公系統(tǒng)的研究
- 三層架構(gòu)系統(tǒng)的開發(fā)與應(yīng)用.pdf
- 三層架構(gòu)主機(jī)存儲(chǔ)系統(tǒng)設(shè)計(jì).pdf
- 試論web系統(tǒng)中三層軟件架構(gòu)的應(yīng)用
- 基于三層架構(gòu)的語義緩存技術(shù)的研究.pdf
- 基于三層架構(gòu)的高校機(jī)房管理系統(tǒng).pdf
- 語義流程系統(tǒng)三層SOA架構(gòu)及實(shí)現(xiàn).pdf
- PRSoC三層服務(wù)架構(gòu)及其URAP協(xié)議研究.pdf
- 論壇三層架構(gòu)設(shè)計(jì)說明書
- 基于三層架構(gòu)的圖書管理系統(tǒng)的開發(fā).pdf
- 基于.net三層架構(gòu)的物流系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 面向bs三層架構(gòu)的代碼生成技術(shù)---畢業(yè)論文
- 三層架構(gòu)計(jì)算機(jī)輔助模擬系統(tǒng)的實(shí)現(xiàn).pdf
- 基于.net三層架構(gòu)績效管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于c.net三層架構(gòu)的韓師數(shù)碼企業(yè)進(jìn)銷存管理系統(tǒng)
- 基于三層架構(gòu)的校園網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn).pdf
評論
0/150
提交評論