現(xiàn)在我們通過一個有趣的小程序“自由的小青蛙”來看看其中的小青蛙是怎樣通過不同的事件來完成各種動作的。(見圖一)
左右跳--按“Z”鍵, 對青蛙點鼠標左右鍵 上下跳--按“X”鍵, 對青蛙點鼠標左右鍵 落 水--雙擊蓮花 還 原--對蓮花點鼠標右鍵 蛙 鳴--按“C”鍵 | (圖一) |
窗體設計界面中,我們可以看出這個程序界面是由一個包含圖形的窗體,一個Command控件,一些Label控件,還有幾個PictureBox 控件所組成。關于PictureBox,將在后一節(jié)作詳細介紹,現(xiàn)在我們只是通過它來認識一下事件。
移動鼠標,觸發(fā)了lblmj的
MouseMove事件。
按“Z”鍵,觸發(fā)了窗體的
KeyPress事件。
單擊左鍵和右鍵,分別觸發(fā)了兩個PictureBox控件的
MouseDown事件。
按“C”鍵,又觸發(fā)了窗體
KeyPress事件。
雙擊左鍵,觸發(fā)了lbltb的
DblClick事件。
單擊左鍵,觸發(fā)了Lbltb的
MouseDown事件。
講到現(xiàn)在,對于屬性、方法、事件這三個概念,你弄懂了嗎?
再舉個例子吧:如果我按一下CommandButton按鈕,要讓一個藍色的Label控件移動,那么, 藍色是Label控件的屬性; 而移動則是 Label控件的方法, 至于什么時候移動,則要放進Command1_Click這個事件中讓它發(fā)生。(見圖二)
| (圖二) |
這三個基礎性概念對今后學習VB重要。當你學到一定的程度,嘗試自己制作ACtiveX控件時,如果概念不清的話,將“方法”弄成“事件”,“事件”混成“屬性”,張冠李戴,會吃足苦頭!
搞清楚了屬性、方法、事件這三個概念,以后理解控件就更能從全方位去考慮,而不光是只從屬性角度來看控件了。
現(xiàn)在來看一下用戶的常用操作所產(chǎn)生的事件。
鼠標事件 Cilck:用戶單擊鼠標鍵時發(fā)生
DbLClick:用戶雙擊鼠標鍵時發(fā)生
MouseDown:用戶釋放鼠標鍵時發(fā)生
MouseMove:移動鼠標時發(fā)生
鍵盤事件 KeyDown:在鍵按下時觸發(fā)。(可獲得一個KeyCode值)
KeyUp:在鍵彈起時觸發(fā)。(可獲得一個KeyCode值)
KeyPress:在鍵盤按下再彈起時發(fā)生。(它可獲得KeyAscii值)
慢著,既然有了KeyDown和KeyUp,為什么還要KeyPress事件,我將鍵盤按下去后,到底是觸發(fā)了KeyPress事件,還是KeyDown或KeyUp事件? 答案是,當我們按了一下鍵盤后,這三種事件都觸發(fā)。
一般而言,大多數(shù)程序并不關心KeyDown事件來確定按下的鍵,KeyPress事件在觸發(fā)后,能夠獲得一個
KeyAscii值。它指鍵盤上的某個鍵與計算機ASCII碼對應的值,如鍵“1”,KeyAscii為49;“A”,KeyAscii為65;“Enter”,KeyAscii為13。 當我們在KeyPress事件中將KeyAscii的值改為0后,就等于禁止鍵入。
來看一下這個文本框,(見圖三)由點到面在此控件的KeyPress事件中有這樣一段代碼,所以用戶無論按了任何鍵,都不能對其輸入文字。(見圖四)
| (圖四) |
(圖四) 然而并不是所有鍵盤上的鍵都有其KeyAscii值,有時,我們程序要判斷用戶是否按了功能鍵,可要區(qū)別數(shù)字小鍵盤和常規(guī)數(shù)字鍵時,那么KeyAscii就無能為力了。此時可以考慮KEyDown和KeyUp事件,當用戶擊鍵后,它們能獲得一個唯一的
KeyCode值,從而判斷用戶到底按了鍵盤上的哪個鍵??梢哉f,鍵盤上大多數(shù)鍵(Tab、PrintScreen鍵除外),都有唯一的KeyCode序列號。
總而言之,我們編程序可以根據(jù)需要來確定所選用的事件,如果是針對文本操作,一般采用KeyPress事件較好,因為它能獲得一個與ASCII碼相通的KeyAscii值。 從這一節(jié)課中,我們了解到了Command_Button的一些常用知識。CommandButton俗稱命令按鈕,很多程序的代碼,都是編寫在CommandButton控件的Click事件中的。
在這一節(jié)中,我們還接觸了事件這個概念。VB屬于事件驅(qū)動程序,它的程序代碼,大多是寫進一個個事件過程中的,所以,我們除了要了解用戶的常用鼠標事件和鍵盤事件外,還必須靈活掌握代碼設計器中的事件選擇框,它能為我們編程帶來方便。 如果深入搞清了KeyAscii與KeyCode的區(qū)別,以及KeyPress與KeyDown和KeyUp的區(qū)別的話,可以使我們的編程水平再上一個檔次。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請
點擊舉報。