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