版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 鍵盤事件鍵盤事件10.1與鼠標相關(guān)的事件和屬性與鼠標相關(guān)的事件和屬性10.2拖放拖放10.310.1.1 KeyPress事件事件10.1.2 KeyDown和和KeyUp事件事件 鍵盤是一種輸入數(shù)據(jù)或者信息的重要工具,鍵盤是一種輸入數(shù)據(jù)或者信息的重要工具,有些控件(如窗體和文本框)本身已經(jīng)具備了處有些控件(如窗體和文本框)本身已經(jīng)具備了處理輸入按鍵的功能,所以在簡單編程的情況下可理輸入按鍵的功能,所以在簡單編程的情況下可以不必編寫鍵盤事件過程。但是,如果要識別組以不必編寫鍵盤事件過程。但是,如果要識別組合鍵、功能鍵、光標移動鍵、小鍵盤(數(shù)字鍵盤合鍵、功能鍵、光標移動鍵、小鍵盤(數(shù)字鍵盤)上
2、的按鍵、區(qū)別按下和松開的動作、對輸入字)上的按鍵、區(qū)別按下和松開的動作、對輸入字符進行篩選,就要使用鍵盤事件了,本章介紹的符進行篩選,就要使用鍵盤事件了,本章介紹的鍵盤事件有鍵盤事件有KeyPress事件、事件、KeyDown事件和事件和KeyUp事件。事件。10.1.1 10.1.1 KeyPressKeyPress事件事件 KeyPress事件,就是當按下鍵盤上的一個可打事件,就是當按下鍵盤上的一個可打印字符鍵(字母、數(shù)字和符號)時所激發(fā)的事件。印字符鍵(字母、數(shù)字和符號)時所激發(fā)的事件。我們知道,在某個時刻,輸入焦點只能位于某一個我們知道,在某個時刻,輸入焦點只能位于某一個控件上(如果窗
3、體上沒有活動的或可見的控件,則控件上(如果窗體上沒有活動的或可見的控件,則輸入焦點位于窗體控件上),當一個控件擁有輸入輸入焦點位于窗體控件上),當一個控件擁有輸入焦點時,該控件才能接受從鍵盤上輸入的信息,所焦點時,該控件才能接受從鍵盤上輸入的信息,所以當按下某個鍵時,所激發(fā)的是擁有輸入焦點的那以當按下某個鍵時,所激發(fā)的是擁有輸入焦點的那個控件的個控件的KeyPress事件。支持事件。支持KeyPress事件的控件事件的控件有窗體、命令按鈕、文本框、復選框、單選框、列有窗體、命令按鈕、文本框、復選框、單選框、列表框、組合框、滾動條與圖片框等。表框、組合框、滾動條與圖片框等。 該事件過程的語法是:
4、該事件過程的語法是:Private Sub object_KeyPress(KeyAscii As Integer)End Sub 其中其中object是指支持是指支持KeyPress事件的控件事件的控件名,比如文本框控件的名,比如文本框控件的KeyPress事件的語法就事件的語法就是:是:Private Sub Text1_KeyPress(KeyAscii As Integer)End Sub 整形參數(shù)整形參數(shù)KeyAscii傳遞的是按鍵字符的傳遞的是按鍵字符的ASCII碼。碼。例如,當按下例如,當按下【F】鍵時,鍵時,KeyAscii的值為的值為70;按下;按下【!】鍵時,鍵時,KeyA
5、scii的值為的值為33等。我們可以使用等。我們可以使用Chr(KeyAscii)函數(shù)將)函數(shù)將KeyAscii參數(shù)轉(zhuǎn)變?yōu)橐粋€字符,例如參數(shù)轉(zhuǎn)變?yōu)橐粋€字符,例如Chr(70)=【F】。 KeyPress事件只能夠處理可打印的鍵盤字符和為數(shù)事件只能夠處理可打印的鍵盤字符和為數(shù)很少的幾個功能鍵,如很少的幾個功能鍵,如Enter(回車鍵)和(回車鍵)和BackSpace(退格鍵),對于其他功能鍵、編輯鍵和定位鍵,則不作退格鍵),對于其他功能鍵、編輯鍵和定位鍵,則不作響應。如果要處理不被響應。如果要處理不被KeyPress識別的擊鍵,則應該使識別的擊鍵,則應該使用用KeyDown和和KeyUp事件。事
6、件。 KeyPress事件在截取對事件在截取對TextBox或或ComboBox控件控件輸入的擊鍵時非常有用,它可以立即測試擊鍵的有效輸入的擊鍵時非常有用,它可以立即測試擊鍵的有效性并在字符輸入時對其進行處理。我們?nèi)绻谛圆⒃谧址斎霑r對其進行處理。我們?nèi)绻贙eyPress事件過程中改變了事件過程中改變了KeyAscii參數(shù)的值,就會參數(shù)的值,就會改變實際輸入的字符,將改變實際輸入的字符,將KeyAscii的值改變?yōu)榈闹蹈淖優(yōu)?時可取時可取消擊鍵,這樣對象便接收不到字符了。消擊鍵,這樣對象便接收不到字符了。 因為不同的字符的因為不同的字符的ASCII碼是不同的,所以利用碼是不同的,所以利用K
7、eyPress事件可以判斷和控制用戶的輸入,例如可以事件可以判斷和控制用戶的輸入,例如可以控制用戶在文本框中只能輸入數(shù)字或字母,還可以判控制用戶在文本框中只能輸入數(shù)字或字母,還可以判斷用戶輸入的字母是大寫還是小寫。斷用戶輸入的字母是大寫還是小寫。 我們把一個文本框控件(我們把一個文本框控件(Text1)拖到窗體上,然)拖到窗體上,然后進入程序代碼窗口,在后進入程序代碼窗口,在“過程過程”框中選擇框中選擇KeyPress,編寫如下代碼:,編寫如下代碼:Private Sub Text1_KeyPress(KeyAscii As Integer) Text1.Text = If KeyAscii
8、57 Then Beep KeyAscii = 0 Else KeyAscii = KeyAscii + 1 End IfEnd Sub 上述過程首先控制用戶的輸入,它只允許用戶輸入上述過程首先控制用戶的輸入,它只允許用戶輸入09的數(shù)字(的數(shù)字(0的的ASCII碼是碼是48,9的的ASCII碼是碼是57),如),如果輸入其他字符,則響鈴(果輸入其他字符,則響鈴(Beep),并消除該字符;然),并消除該字符;然后,再把用戶輸入的數(shù)字加后,再把用戶輸入的數(shù)字加1。 運行上面的程序,在文本框中輸入一個運行上面的程序,在文本框中輸入一個1,則會顯示,則會顯示2;輸入;輸入9的時候,則會顯示一個英文冒號
9、,因為英文冒的時候,則會顯示一個英文冒號,因為英文冒號的號的ASCII碼是碼是58。 上面我們說過,只有在窗體上沒有活動或可見控件上面我們說過,只有在窗體上沒有活動或可見控件時,窗體才能接收鍵盤事件。如果我們希望優(yōu)先激活窗時,窗體才能接收鍵盤事件。如果我們希望優(yōu)先激活窗體的鍵盤事件,則可以把窗體的體的鍵盤事件,則可以把窗體的KeyPreview屬性設(shè)置為屬性設(shè)置為True。這個屬性不只對。這個屬性不只對KeyPress事件有用,對事件有用,對KeyDown和和KeyUp事件同樣有用。事件同樣有用。例例10-1(參看教材(參看教材P164-166)10.1.2 10.1.2 KeyDownKey
10、Down和和KeyUpKeyUp事件事件 KeyDown事件是當按下按鍵時觸發(fā),而事件是當按下按鍵時觸發(fā),而KeyUp事件是當釋放按鍵時觸發(fā),這兩個事件事件是當釋放按鍵時觸發(fā),這兩個事件提供了最低級的鍵盤響應,可以報告鍵盤的物提供了最低級的鍵盤響應,可以報告鍵盤的物理狀態(tài),它們返回的是理狀態(tài),它們返回的是“鍵鍵”。這和。這和KeyPress事件不同,事件不同,KeyPress事件并不反映鍵盤的直接事件并不反映鍵盤的直接狀態(tài),它返回的是狀態(tài),它返回的是“字符字符”的的ASCII碼。碼。 我們進一步舉例闡明這一差別。按下字母我們進一步舉例闡明這一差別。按下字母鍵鍵“A”時,時,KeyDown所得到
11、的所得到的KeyCode碼(碼(KeyDown事件的參數(shù))與按字母鍵事件的參數(shù))與按字母鍵“a”時相同時相同,而對,而對KeyPress來說,所的到的來說,所的到的ASCII碼是不碼是不相同的。相同的。 這兩個事件過程的語法為:這兩個事件過程的語法為:Private Sub object_KeyDown(KeyCode As Integer, Shift As Integer)Private Sub object_KeyUp(KeyCode As Integer, Shift As Integer) 其中的其中的object是對象名,例如窗體的是對象名,例如窗體的KeyDow事件事件的語法為:
12、的語法為:Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) KeyDown和和KeyUp事件都是有兩個參數(shù),即事件都是有兩個參數(shù),即KeyCode和和Shift,下面對兩個參數(shù)的具體含義進行解,下面對兩個參數(shù)的具體含義進行解釋。釋。1 1KeyCodeKeyCode參數(shù)參數(shù) KeyCode是一個整形參數(shù),表示按鍵的代碼。每一是一個整形參數(shù),表示按鍵的代碼。每一個鍵都有相應的鍵代碼,該碼是以個鍵都有相應的鍵代碼,該碼是以“鍵鍵”為準,而不是為準,而不是以以“字符字符”為準,字母鍵的鍵代碼與此字母的大寫字符為準,字母鍵的鍵
13、代碼與此字母的大寫字符ASCII值相同。如上面介紹,大寫字母與小寫字母使用值相同。如上面介紹,大寫字母與小寫字母使用同一個鍵,它們的同一個鍵,它們的KeyCode相同,具體是大寫字母還是相同,具體是大寫字母還是小寫字母要通過與小寫字母要通過與Shift參數(shù)的組合來判斷。而大鍵盤上參數(shù)的組合來判斷。而大鍵盤上數(shù)字鍵和數(shù)字鍵盤上的相同的數(shù)字鍵的數(shù)字鍵和數(shù)字鍵盤上的相同的數(shù)字鍵的KeyCode是不一是不一樣的,因為它們不是同一個樣的,因為它們不是同一個“鍵鍵”。 Visual Basic為每個鍵代碼聲明了一個內(nèi)部常量。例為每個鍵代碼聲明了一個內(nèi)部常量。例如如F1鍵的鍵代碼為鍵的鍵代碼為112,相應的
14、內(nèi)部常量為,相應的內(nèi)部常量為vbKeyF1;Home鍵的鍵代碼為鍵的鍵代碼為36,內(nèi)部常量為,內(nèi)部常量為vbKeyHome。如表。如表10-1所示,列出了一些常用按鍵的所示,列出了一些常用按鍵的KeyCode值和內(nèi)部常值和內(nèi)部常量的對應關(guān)系。量的對應關(guān)系。表10-1 一些常用鍵的KeyCode值和內(nèi)部常數(shù)功能鍵KeyCode值常數(shù)功能鍵KeyCode值常數(shù)F1112vbKeyF1Enter13vbKeyReturnF2113VbKeyF2Esc27vbKeyEscapeF3114VbKeyF3PageUp33VbKeyPageUpF4115VbKeyF4PageDown34VbKeyPageD
15、ownF5116VbKeyF5Home35VbKeyHomeF6117VbKeyF6End36VbKeyEndF7118VbKeyF7Insert45VbKeyInsertF8119VbKeyF8Delete46VbKeyDeleteF9120VbKeyF937VbKeyLeftF10121vbKeyF1038VbKeyUpBackspace8vbKeyBack39VbKeyRightTab9vbKeyTab40vbKeyDown2 2ShiftShift參數(shù)參數(shù) Shift也是一個整形參數(shù),指示在按下一個鍵時,也是一個整形參數(shù),指示在按下一個鍵時,是否同時按下了是否同時按下了Shift、Ct
16、rl和和Alt鍵。它以二進制形式鍵。它以二進制形式表示,當按下表示,當按下Shift鍵時,鍵時,Shift參數(shù)的值為參數(shù)的值為001(十進(十進制數(shù)制數(shù)1);當按下);當按下Ctrl鍵時,鍵時,Shift參數(shù)的值為參數(shù)的值為010(十(十進制數(shù)進制數(shù)2);當按下);當按下Alt鍵時,鍵時,Shift參數(shù)的值為參數(shù)的值為100(十(十進制數(shù)進制數(shù)4)。如果三個鍵均未被按下,)。如果三個鍵均未被按下,Shift參數(shù)的值參數(shù)的值為為0,如果這三個鍵不只一個鍵被按下,則,如果這三個鍵不只一個鍵被按下,則Shift參數(shù)參數(shù)的值是被按下鍵相應數(shù)值之和。例如,如果的值是被按下鍵相應數(shù)值之和。例如,如果Shi
17、ft參數(shù)參數(shù)的值為的值為6,表明按下了,表明按下了Ctrl和和Alt兩個鍵。兩個鍵。 因此,因此,Shift參數(shù)的值共有參數(shù)的值共有8種可能,見表種可能,見表10-2。表10-2 Shift參數(shù)的值十進制數(shù)二進制數(shù)作用0000沒有按下轉(zhuǎn)換鍵1001按下Shift鍵2010按下Ctrl鍵3011按下Ctrl+Shift鍵4100按下Alt鍵5101按下Alt+Shift鍵6110按下Alt+Ctrl鍵7111按下Alt+Ctrl+Shift鍵 上面我們已經(jīng)說過,上面我們已經(jīng)說過,KeyDown是當是當一個鍵被按下時所產(chǎn)生的事件,而一個鍵被按下時所產(chǎn)生的事件,而KeyUp是當松開被按下的鍵時所產(chǎn)生
18、的是當松開被按下的鍵時所產(chǎn)生的事件,我們可以通過一個具體的程序來事件,我們可以通過一個具體的程序來說明。說明。 新建一個工程,窗體上不放任何控新建一個工程,窗體上不放任何控件,也可以把窗體的件,也可以把窗體的KeyPreview屬性設(shè)屬性設(shè)為為True,然后編寫如下事件:,然后編寫如下事件:Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Form1.ForeColor = &O0 Print 您現(xiàn)在按下了鍵盤上的某個鍵您現(xiàn)在按下了鍵盤上的某個鍵End SubPrivate Sub Form_KeyUp(Key
19、Code As Integer, Shift As Integer) Form1.ForeColor = &HFF Print 您現(xiàn)在松開了您按下的鍵您現(xiàn)在松開了您按下的鍵End Sub 程序運行后,如果壓下某個鍵,則在窗體上連續(xù)顯示程序運行后,如果壓下某個鍵,則在窗體上連續(xù)顯示“您現(xiàn)您現(xiàn)在按下了鍵盤上的某個鍵在按下了鍵盤上的某個鍵”,顏色為黑色,直到松開了該鍵,窗,顏色為黑色,直到松開了該鍵,窗體上顯示體上顯示“您現(xiàn)在松開了您按下的鍵您現(xiàn)在松開了您按下的鍵”,顏色為紅色。,顏色為紅色。例例10-2(參看教材(參看教材P168-169)10.2 10.2 與鼠標相關(guān)的事件和屬性與鼠標相
20、關(guān)的事件和屬性10.2.1 MouseDown、MouseUp和和MouseMove事件事件10.2.2 使用鼠標事件使用鼠標事件10.2.3 MousePointer和和MouseIcon屬性屬性 我們前面已經(jīng)多次使用過窗體和其他控件的我們前面已經(jīng)多次使用過窗體和其他控件的Click事件和事件和DblClick事件,這兩個是很簡單的鼠標事件,事件,這兩個是很簡單的鼠標事件,它們沒有參數(shù),當程序在處理這兩個事件時,不能確它們沒有參數(shù),當程序在處理這兩個事件時,不能確定用戶是在對象的什么位置上單擊鼠標,也不能確定定用戶是在對象的什么位置上單擊鼠標,也不能確定用戶單擊的是鼠標的哪一個鍵,更不能確定
21、在單擊鼠用戶單擊的是鼠標的哪一個鍵,更不能確定在單擊鼠標時是否按下了鍵盤上的某個控制鍵(如標時是否按下了鍵盤上的某個控制鍵(如Shift、Ctrl和和Alt鍵)。如果要在程序中得知上面所述各種狀態(tài),鍵)。如果要在程序中得知上面所述各種狀態(tài),就要處理下面的就要處理下面的MouseDown、MouseUp和和MouseMove事件。事件。 大家使用大家使用Windows及其應用程序時,可能會注意及其應用程序時,可能會注意到,當鼠標光標位于不同的窗口內(nèi)時,其形狀是不一到,當鼠標光標位于不同的窗口內(nèi)時,其形狀是不一樣的,有時候是箭頭狀,有時候是十字,有時候是豎樣的,有時候是箭頭狀,有時候是十字,有時候
22、是豎線等。在線等。在Visual Basic中,我們可以通過設(shè)置相關(guān)的屬中,我們可以通過設(shè)置相關(guān)的屬性來改變鼠標的形狀。性來改變鼠標的形狀。10.2.1 10.2.1 MouseDownMouseDown、MouseUpMouseUp和和MouseMoveMouseMove事件事件 具具MouseDown、MouseUp和和MouseMove事件的對象有窗體、命令按事件的對象有窗體、命令按鈕、文本框、復選框、單選框、框架、鈕、文本框、復選框、單選框、框架、圖像、標簽、列表框和圖片框等。圖像、標簽、列表框和圖片框等。 當用戶在對象上按下鼠標鍵時觸發(fā)當用戶在對象上按下鼠標鍵時觸發(fā)MouseDown
23、事件,事件過程的事件,事件過程的語法為:語法為:Private Sub object_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 當用戶在對象上釋放鼠標鍵時觸發(fā)當用戶在對象上釋放鼠標鍵時觸發(fā)MouseUp事件,事件過程的語法事件,事件過程的語法為:為:Private Sub object_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 當用戶在對象上移動鼠標時觸發(fā)當用戶在對象上移動鼠標時觸發(fā)Mouse
24、Move事件,事件過程的語法事件,事件過程的語法為:為:Private Sub object_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single) 語法中的語法中的object是只對象名,如是只對象名,如“Form”、“Command”等。等。 這三個事件過程與前面學過的其他事件過程最大的不同在于,它這三個事件過程與前面學過的其他事件過程最大的不同在于,它們都具有四個參數(shù)。通過這四個參數(shù)可以在程序中確定事件發(fā)生時詳們都具有四個參數(shù)。通過這四個參數(shù)可以在程序中確定事件發(fā)生時詳細的信息。這四個參數(shù)的取值與
25、意義如下。細的信息。這四個參數(shù)的取值與意義如下。1 1ButtonButton參數(shù)參數(shù) Button參數(shù)值是一個整形值,參數(shù)的參數(shù)值是一個整形值,參數(shù)的值反映事件發(fā)生時哪個鼠標鍵被按下或值反映事件發(fā)生時哪個鼠標鍵被按下或釋放。用釋放。用0,1,2位表示鼠標的左、右、位表示鼠標的左、右、中鍵,每位用中鍵,每位用1,0表示被按下或釋放,表示被按下或釋放,如圖如圖10-4所示。三個位的二進制轉(zhuǎn)換成十所示。三個位的二進制轉(zhuǎn)換成十進制就是進制就是Button的值,的值,1表示左鍵,表示左鍵,2表示表示右鍵,右鍵,4表示中鍵。表示中鍵。 圖10-4 Button參數(shù)與位的關(guān)系 對于對于MouseMove事
26、件,事件發(fā)生時,可事件,事件發(fā)生時,可能同時有兩個或三個鼠標鍵被按下,這時能同時有兩個或三個鼠標鍵被按下,這時Button參數(shù)是相應的兩個或三個值的和。例參數(shù)是相應的兩個或三個值的和。例如,如果如,如果MouseMove事件發(fā)生時,事件發(fā)生時,Button參參數(shù)的值是數(shù)的值是3,則表示鼠標左鍵和右鍵都被按,則表示鼠標左鍵和右鍵都被按下(下(1+2=3)。因為移動鼠標時,可以不按)。因為移動鼠標時,可以不按下任何一個鼠標鍵,所以對于下任何一個鼠標鍵,所以對于MouseMove事事件,這個參數(shù)的值可以為件,這個參數(shù)的值可以為0。2 2ShiftShift參數(shù)參數(shù) 此參數(shù)也是一個整數(shù),它表明在這三個
27、鼠標此參數(shù)也是一個整數(shù),它表明在這三個鼠標事件發(fā)生時,鍵盤上的哪一個控制鍵被按下。事件發(fā)生時,鍵盤上的哪一個控制鍵被按下。Shift參數(shù)的值為參數(shù)的值為1,表示,表示Shift鍵被按下;鍵被按下;Shift參參數(shù)的值為數(shù)的值為2,表示,表示Ctrl鍵被按下;鍵被按下;Shift參數(shù)的值為參數(shù)的值為4,表示,表示Alt鍵被按下。如果同時有兩個或三個控鍵被按下。如果同時有兩個或三個控制鍵被按下,則制鍵被按下,則Shift參數(shù)的值是相應鍵的數(shù)值之參數(shù)的值是相應鍵的數(shù)值之和。例如,當事件發(fā)生時,如果和。例如,當事件發(fā)生時,如果Shift鍵和鍵和Alt鍵鍵同時處于按下狀態(tài),則同時處于按下狀態(tài),則Shif
28、t參數(shù)值為參數(shù)值為5;如果事;如果事件發(fā)生時,沒有鍵盤控制鍵被按下,則這個參數(shù)件發(fā)生時,沒有鍵盤控制鍵被按下,則這個參數(shù)的值為的值為0。3 3X X參數(shù)、參數(shù)、Y Y參數(shù)參數(shù) 這兩個參數(shù)指明當事件發(fā)生時,鼠標指針這兩個參數(shù)指明當事件發(fā)生時,鼠標指針熱點所處位置的坐標,它們確定了鼠標位置。熱點所處位置的坐標,它們確定了鼠標位置。這里的這里的X、Y不需要給出具體的數(shù)值,它隨著鼠不需要給出具體的數(shù)值,它隨著鼠標光標在窗體上的移動而變化。默認情況下,標光標在窗體上的移動而變化。默認情況下,這個坐標的原點在引發(fā)事件對象的左上角。這個坐標的原點在引發(fā)事件對象的左上角。 應該注意的是,當移動鼠標時,會不斷地
29、應該注意的是,當移動鼠標時,會不斷地發(fā)生發(fā)生MouseMove事件。但是,并不是每經(jīng)過一事件。但是,并不是每經(jīng)過一點都會發(fā)生點都會發(fā)生MouseMove事件,而是在移動過程事件,而是在移動過程中每間隔很短的一段時間發(fā)生一個此事件。所中每間隔很短的一段時間發(fā)生一個此事件。所以,在相同的距離上,鼠標移動的速度越快,以,在相同的距離上,鼠標移動的速度越快,產(chǎn)生的產(chǎn)生的MouseMove事件就越少。事件就越少。 在對象上操作一次鼠標,會產(chǎn)生多個與鼠標有關(guān)的事在對象上操作一次鼠標,會產(chǎn)生多個與鼠標有關(guān)的事件,如:件,如:Click事件、事件、DblClick事件、事件、MouseDown事件、事件、Mo
30、useUp事件或事件或MouseMove事件。對于不同類型的對象,事件。對于不同類型的對象,這些事件的產(chǎn)生順序可能不同,還有些對象不支持其中的這些事件的產(chǎn)生順序可能不同,還有些對象不支持其中的某個事件。所以,在使用前一定要仔細測試。某個事件。所以,在使用前一定要仔細測試。 比如,在窗體上單擊,會依次引發(fā)比如,在窗體上單擊,會依次引發(fā)MouseDown事件、事件、MouseUp事件和事件和Click事件。在窗體上雙擊,會依次引發(fā)如事件。在窗體上雙擊,會依次引發(fā)如下事件:下事件:MouseDown、Click、DblClick、MouseUp。在命。在命令按鈕單擊,會依次引發(fā)令按鈕單擊,會依次引發(fā)
31、MouseDown、Click、MouseUp事事件。件。 當一個控件不可見或無效時,針對它的鼠標操作會傳當一個控件不可見或無效時,針對它的鼠標操作會傳遞到位于它下面的對象上。遞到位于它下面的對象上。10.2.2 10.2.2 使用鼠標事件使用鼠標事件 使用使用MouseMove事件,可以把命令事件,可以把命令按鈕移動到窗體的不同位置,這樣可以按鈕移動到窗體的不同位置,這樣可以設(shè)計一個程序,在用戶點擊窗體上的命設(shè)計一個程序,在用戶點擊窗體上的命令按鈕時,命令按鈕就移動,使用戶點令按鈕時,命令按鈕就移動,使用戶點不住這個按鈕。下面我們設(shè)計一個這樣不住這個按鈕。下面我們設(shè)計一個這樣有趣的程序。有趣
32、的程序。例例10-3(參看教材(參看教材P172-173)例例10-4 (參看教材(參看教材P173-174)例例10-5 (參看教材(參看教材P175-176)例例10-6 (參看教材(參看教材P176-177)10.2.3 10.2.3 MousePointerMousePointer和和MouseIconMouseIcon屬性屬性 前面我們已經(jīng)說過,在前面我們已經(jīng)說過,在Windows環(huán)境中,在不同環(huán)境中,在不同的窗口,不同的地方,鼠標指針的形狀可能是不一樣的窗口,不同的地方,鼠標指針的形狀可能是不一樣的,可以用不同的鼠標指針來反映信息。在的,可以用不同的鼠標指針來反映信息。在Visua
33、l Basic中,我們可以通過設(shè)置中,我們可以通過設(shè)置MousePointer和和MouseIcon屬性來改變鼠標指針的形狀。屬性來改變鼠標指針的形狀。 MousePointer屬性指定在運行時當鼠標移動到對屬性指定在運行時當鼠標移動到對象上時鼠標指針的形狀,窗體和多數(shù)控件對象都具有象上時鼠標指針的形狀,窗體和多數(shù)控件對象都具有這兩個屬性,該屬性既可以在屬性窗口中設(shè)置,也可這兩個屬性,該屬性既可以在屬性窗口中設(shè)置,也可以在程序代碼中設(shè)置。以在程序代碼中設(shè)置。 MousePointer屬性是一個整數(shù),可以取屬性是一個整數(shù),可以取015,其,其含義見表含義見表10-4。表10-4 MousePoi
34、nter屬性的取值常量值鼠標指針的形狀vbDefault0(默認值)形狀由對象決定vbArrow1箭頭vbCrosshair2十字線(Crosshair指針)vbIbeam3I型vbIconPointer4箭頭圖標(嵌套方框)vbSizePointer5尺寸線(指向上、下、左和右4個方向的箭頭)vbSizeNESW6右上-左下尺寸線(指向右上和左下方向的雙箭頭)vbSizeNS7垂直尺寸線(指向上下兩個方向的雙箭頭)vbSizeNWSE8左上-右下尺寸線(指向左上和右下方向的雙箭頭)vbSizeWE9水平尺寸線(指向左右兩個方向的雙箭頭)vbUpArrow10向上的箭頭vbHourglass1
35、1沙漏(表示等待狀態(tài))vbNoDrop12沒有入口:一個圓形記號,表示控件移動受限vbArrowHourglass13箭頭和沙漏vbArrowQuestion14箭頭和問號vbSizeAll15四向尺寸線(表示改變大?。﹙bCustom99通過MouseIcon屬性所指定的自定義圖標 當某個對象的當某個對象的MousePointer屬性被設(shè)置為上表中的屬性被設(shè)置為上表中的某個值時,鼠標光標在該對象內(nèi)就以相應的形狀顯示。某個值時,鼠標光標在該對象內(nèi)就以相應的形狀顯示。例如,假定一個文本框的例如,假定一個文本框的MousePointer屬性被設(shè)置為屬性被設(shè)置為3,則當鼠標光標進入該文本框時,鼠標光
36、標為則當鼠標光標進入該文本框時,鼠標光標為“”形,而形,而在文本框之外,鼠標光標保持為默認形狀。在文本框之外,鼠標光標保持為默認形狀。 MouseIcon屬性使用一個圖標文件來自定義鼠標形屬性使用一個圖標文件來自定義鼠標形狀,圖標文件一般以狀,圖標文件一般以.ico和和.cur為擴展名。只有當為擴展名。只有當MousePointer屬性被設(shè)置為屬性被設(shè)置為99時,該屬性才有效。在程時,該屬性才有效。在程序中應該使用序中應該使用LoadPicture函數(shù)裝入磁盤文件來設(shè)置此屬函數(shù)裝入磁盤文件來設(shè)置此屬性,如下面一段代碼:性,如下面一段代碼: Form1.MousePointer = 99 For
37、m1.MouseIcon = LoadPicture(App.Path + ccc.ico) 在在Windows中,鼠標指針的形狀的應用有一些約定中,鼠標指針的形狀的應用有一些約定俗成的規(guī)則,為了和俗成的規(guī)則,為了和Windows環(huán)境相適應,在應用程序環(huán)境相適應,在應用程序中應遵守這些規(guī)則,主要有以下幾點:中應遵守這些規(guī)則,主要有以下幾點:(1)表示用戶當前可用的功能,如)表示用戶當前可用的功能,如“I”形鼠標指針形狀(形鼠標指針形狀(屬性值屬性值3)表示插入文本;十字形狀(屬性值)表示插入文本;十字形狀(屬性值2)表示畫)表示畫圓或線,或者表示選擇可視對象進行復制或存取。圓或線,或者表示選擇
38、可視對象進行復制或存取。(2)表示程序狀態(tài)的用戶可視線索,如沙漏(屬性值)表示程序狀態(tài)的用戶可視線索,如沙漏(屬性值11)表示程序忙,一段時間后將控制權(quán)交給用戶。表示程序忙,一段時間后將控制權(quán)交給用戶。(3)當坐標()當坐標(X,Y)值為)值為0時,改變鼠標指針的形狀。時,改變鼠標指針的形狀。 上面我們說過,上面我們說過,MousePointer屬性既可以在屬性屬性既可以在屬性窗口中設(shè)置,也可以在程序代碼中設(shè)置。在程序代碼窗口中設(shè)置,也可以在程序代碼中設(shè)置。在程序代碼中設(shè)置中設(shè)置MousePointer屬性的一般格式為:屬性的一般格式為: 對象對象. MousePointer = 設(shè)置值設(shè)置值
39、 這里的這里的“對象對象”可以是窗體、屏幕、框架、組合框可以是窗體、屏幕、框架、組合框、復選框、命令按鈕、文本框、標簽、圖像、圖片框、復選框、命令按鈕、文本框、標簽、圖像、圖片框、滾動條、列表框、目錄列表框、驅(qū)動器列表框、文、滾動條、列表框、目錄列表框、驅(qū)動器列表框、文件列表框等,件列表框等,“設(shè)置值設(shè)置值”是表是表10-4中的一個值。中的一個值。例例10-7(參看教材(參看教材P179)10.3 10.3 拖放拖放 在在Windows環(huán)境中,我們經(jīng)常使用拖放操環(huán)境中,我們經(jīng)常使用拖放操作。所謂拖放,就是在屏幕上用鼠標把一個對作。所謂拖放,就是在屏幕上用鼠標把一個對象從一個地方象從一個地方“拖
40、拉拖拉”到另一個地方再放下。到另一個地方再放下。拖放的一般過程是,把鼠標光標移動到一個控拖放的一般過程是,把鼠標光標移動到一個控件對象上,按下鼠標左鍵,不要松開,然后移件對象上,按下鼠標左鍵,不要松開,然后移動鼠標,對象將隨鼠標的移動而在屏幕上拖動動鼠標,對象將隨鼠標的移動而在屏幕上拖動,在松開鼠標鍵后,對象即被放下。通常把原,在松開鼠標鍵后,對象即被放下。通常把原來位置的對象叫做源對象,而拖動后放下的位來位置的對象叫做源對象,而拖動后放下的位置的對象叫做目標對象。置的對象叫做目標對象。 為了有助于理解這種拖放,可以把拖放過為了有助于理解這種拖放,可以把拖放過程分解成兩個操作:拖動和放下,程分
41、解成兩個操作:拖動和放下,“拖動拖動”是是發(fā)生在源對象上的發(fā)生在源對象上的“拖拖”操作,操作,“放下放下”是發(fā)是發(fā)生在目標對象上的生在目標對象上的“放放”操作,即把源對象操作,即把源對象“放放”在目標對象上。在目標對象上。 Visual Basic中,設(shè)計模式下,各控件都可中,設(shè)計模式下,各控件都可以用鼠標隨意拖放的方式來改變控件的大小和以用鼠標隨意拖放的方式來改變控件的大小和位置,位置,VB的拖放功能使用戶在程序運行時也的拖放功能使用戶在程序運行時也具有這種功能。在拖動過程中,被拖動的對象具有這種功能。在拖動過程中,被拖動的對象變?yōu)榛疑?。變?yōu)榛疑?. 1.與拖放有關(guān)的屬性、事件和方法與拖放
42、有關(guān)的屬性、事件和方法 除了菜單、記時器和通用對話框除了菜單、記時器和通用對話框外,其他控件均可在程序運行期間被外,其他控件均可在程序運行期間被拖放。表拖放。表10-5列出了與拖放有關(guān)的屬列出了與拖放有關(guān)的屬性、事件和方法,使用這些屬性、事性、事件和方法,使用這些屬性、事件和方法能夠指定拖放操作的意義,件和方法能夠指定拖放操作的意義,而且能指定對于給定控件啟動拖動操而且能指定對于給定控件啟動拖動操作的方法。作的方法。表10-5 與拖放有關(guān)的屬性、事件和方法類別項目說明屬性DragMode啟動自動拖動控件或手動拖動控件DragIcon指定拖動控件時顯示的圖標事件DragDrop識別何時將控件拖動
43、到對象上DragOver識別何時在對象上拖動控件方法Drag啟動或停止手動拖動 拖放分為自動拖放和手動拖放,拖放分為自動拖放和手動拖放,DragMode屬性用來設(shè)置自動或手動拖放模式。在默認情屬性用來設(shè)置自動或手動拖放模式。在默認情況下,該屬性值為況下,該屬性值為0,這時可以用手工方式來確,這時可以用手工方式來確定拖放操作何時開始或結(jié)束。為了能對一個控定拖放操作何時開始或結(jié)束。為了能對一個控件執(zhí)行自動拖放操作,必須把它的件執(zhí)行自動拖放操作,必須把它的DragMode屬屬性設(shè)置為性設(shè)置為1,這時控件不能正常響應鼠標事件,這時控件不能正常響應鼠標事件,如如Click事件和事件和MouseDown事
44、件。該屬性可以在事件。該屬性可以在屬性窗口中設(shè)置,也可以在程序代碼中設(shè)置,屬性窗口中設(shè)置,也可以在程序代碼中設(shè)置,例如:例如: Text1.DragMode = 1 在拖動一個對象的過程中,并不是對象本身在移在拖動一個對象的過程中,并不是對象本身在移動,而是移動代表對象的圖標。也就是說,一旦要拖動,而是移動代表對象的圖標。也就是說,一旦要拖動一個控件,這個控件就變成一個圖標,等放下后再動一個控件,這個控件就變成一個圖標,等放下后再恢復成原來的控件,默認為將源對象的灰色輪廓作為恢復成原來的控件,默認為將源對象的灰色輪廓作為拖動的圖標。如果想用某個圖標(擴展名為拖動的圖標。如果想用某個圖標(擴展名
45、為.ico)來代)來代替該輪廓,則可以通過替該輪廓,則可以通過DragIcon屬性進行設(shè)置。該屬屬性進行設(shè)置。該屬性可以在屬性窗口進行設(shè)置,也可以在程序中用性可以在屬性窗口進行設(shè)置,也可以在程序中用LoadPicture函數(shù)進行設(shè)置。例如:函數(shù)進行設(shè)置。例如: Command1.DragIcon = LoadPicture(App.Path + aa.ico) 這里,用這里,用“aa.ico”作為命令按鈕的作為命令按鈕的DragIcon屬性屬性,當拖動該按鈕時,按鈕變成,當拖動該按鈕時,按鈕變成aa.ico所表示的圖標。所表示的圖標。 當把控件(圖標)拖到目標之后,如果松開鼠標鍵當把控件(圖標
46、)拖到目標之后,如果松開鼠標鍵,則產(chǎn)生一個,則產(chǎn)生一個DragDrop事件。該事件的過程語法為:事件。該事件的過程語法為:Private Sub object_DragDrop(Source As Control, X As Single, Y As Single)End Sub 其中的其中的“object”是指對象名,如是指對象名,如Form、Command1等。該事件過程有等。該事件過程有3個參數(shù),分別為:個參數(shù),分別為:Source、X和和Y。其中其中Source是一個對象變量,其類型為是一個對象變量,其類型為Control,該參數(shù),該參數(shù)含有被拖動對象的屬性??梢韵袷褂每丶粯邮褂盟?,
47、含有被拖動對象的屬性??梢韵袷褂每丶粯邮褂盟?,可以引用其屬性或調(diào)用其方法。例如:可以引用其屬性或調(diào)用其方法。例如: If Source.Name = form1 Then 用來判斷被拖動對象的用來判斷被拖動對象的Name屬性是否為屬性是否為“form1”。 參數(shù)參數(shù)X、Y是松開鼠標鍵放下對象時鼠標是松開鼠標鍵放下對象時鼠標光標的位置。光標的位置。 需要注意的是,如果沒有進行編程設(shè)計,需要注意的是,如果沒有進行編程設(shè)計,對象本身不會移動到新的位置或被加到目標對對象本身不會移動到新的位置或被加到目標對象中,用戶一定要在目標對象的象中,用戶一定要在目標對象的DragDrop事事件中進行程序設(shè)計實現(xiàn)
48、真正的拖動。件中進行程序設(shè)計實現(xiàn)真正的拖動。 在源對象被拖動到目標對象的過程在源對象被拖動到目標對象的過程中,如果經(jīng)過其他對象,則在這些對象中,如果經(jīng)過其他對象,則在這些對象上會產(chǎn)生上會產(chǎn)生DragOver事件,當然在目標對事件,當然在目標對象上也會產(chǎn)生象上也會產(chǎn)生DragOver事件,這個事件事件,這個事件發(fā)生在發(fā)生在DragDrop事件之前。事件之前。DragOver事事件過程語法為:件過程語法為:Private Sub object_DragOver(Source As Control, X As Single, Y As Single, State As Integer)End Sub
49、 該過程有該過程有4個參數(shù),其中個參數(shù),其中Source參數(shù)的含參數(shù)的含義和義和DragDrop事件的事件的Source參數(shù)義相同,參數(shù)義相同,X、Y是拖動時鼠標光標的坐標位置。是拖動時鼠標光標的坐標位置。State參數(shù)是一個參數(shù)是一個整數(shù)值,可以取以下整數(shù)值,可以取以下3個值:個值:0鼠標光標正進入目標對象的區(qū)域;鼠標光標正進入目標對象的區(qū)域;1 鼠標光標正退出目標對象的區(qū)域;鼠標光標正退出目標對象的區(qū)域;2鼠標光標正位于目標對象的區(qū)域之內(nèi)。鼠標光標正位于目標對象的區(qū)域之內(nèi)。 與拖放有關(guān)的方法不僅有與拖放有關(guān)的方法不僅有Drag方法,還有方法,還有Move方法,其中方法,其中Move方法我們
50、比較熟悉,下面主要介紹方法我們比較熟悉,下面主要介紹一下一下Drag方法。方法。 Drag方法的格式為:方法的格式為: 對象對象. Drag 整數(shù)整數(shù) 不管對象的不管對象的DragMode屬性如何設(shè)置,都可以屬性如何設(shè)置,都可以用用Drag方法來人工地啟動或停止一個拖動過程。方法來人工地啟動或停止一個拖動過程?!罢麛?shù)整數(shù)”的取值為的取值為0、1或或2,其含義分別為:,其含義分別為: 0取消指定控件的拖放;取消指定控件的拖放; 1 當當Drag方法出現(xiàn)在控件的事件過程中時,允許拖放方法出現(xiàn)在控件的事件過程中時,允許拖放指定的控件;指定的控件; 2結(jié)束控件的拖動,并發(fā)出一個結(jié)束控件的拖動,并發(fā)出一
51、個DragDrop事件。事件。例例10-8(參看教材(參看教材P181-183)2.2.自動拖放自動拖放 前面我們說過,默認情況下,對象的前面我們說過,默認情況下,對象的DragMode屬性為屬性為0,這時可以用手工方,這時可以用手工方式來確定拖放,如果要實現(xiàn)自動拖放,式來確定拖放,如果要實現(xiàn)自動拖放,則需要把對象的則需要把對象的DragMode屬性設(shè)置為屬性設(shè)置為“1-Automatic”。 圖圖10-14說明了實現(xiàn)自動拖放在各個說明了實現(xiàn)自動拖放在各個對象上所涉及的屬性、方法和事件。對象上所涉及的屬性、方法和事件。圖10-14 自動拖放涉及的屬性、方法和事件例例10-9(參看教材(參看教材
52、P183-184)3.3.手動拖放手動拖放 前面我們介紹了自動拖放,下面我們前面我們介紹了自動拖放,下面我們介紹一下手動拖放。與自動拖放不同,手介紹一下手動拖放。與自動拖放不同,手動拖放不必把動拖放不必把DragMode屬性設(shè)置為屬性設(shè)置為“1-Automatic”,仍保持默認的,仍保持默認的“0-Manual”。 圖圖10-16說明了實現(xiàn)手動拖放在各個說明了實現(xiàn)手動拖放在各個對象上所涉及的屬性、方法和事件。對象上所涉及的屬性、方法和事件。圖10-16 手動拖放所涉及的屬性、方法和事件 手動拖放比自動拖放提供了更多控制,可手動拖放比自動拖放提供了更多控制,可以由用戶自行決定何時拖放,何時停止,
53、允許以由用戶自行決定何時拖放,何時停止,允許指定可以拖動控件的時間以及不可拖動控件的指定可以拖動控件的時間以及不可拖動控件的時間(在自動拖放里,只要設(shè)置不變,就總能時間(在自動拖放里,只要設(shè)置不變,就總能拖動控件)。拖動控件)。 比如在響應比如在響應MouseUp和和MouseDown事件事件或響應鍵盤命令或菜單命令時得以進行拖放?;蝽憫I盤命令或菜單命令時得以進行拖放。有了手動拖放,還可以在開始拖放前識別有了手動拖放,還可以在開始拖放前識別MouseDown事件,這樣就可以記錄鼠標的位事件,這樣就可以記錄鼠標的位置。置。 為了在代碼中啟動拖放,應將為了在代碼中啟動拖放,應將DragMode屬
54、性保屬性保持默認的持默認的“0-Manual”。然后,無論何時開始拖放或停。然后,無論何時開始拖放或停止拖放都要使用我們前面介紹的止拖放都要使用我們前面介紹的Drag方法(在一些特方法(在一些特殊情況下,如果殊情況下,如果DragMode屬性為屬性為1,也可采用,也可采用Drag方方法編程實現(xiàn)控件的拖放)。法編程實現(xiàn)控件的拖放)。 Drag方法的操作值為方法的操作值為1時可以拖放指定的控件;時可以拖放指定的控件;值為值為0或或2時停止拖放,如值為時停止拖放,如值為0,則表示取消控件的拖,則表示取消控件的拖放操作,如值為放操作,如值為2則表示停止拖放,并產(chǎn)生則表示停止拖放,并產(chǎn)生DragDrop
55、事件。事件。Drag方法與方法與MouseDown、MouseUp事件過程結(jié)事件過程結(jié)合使用,可以實現(xiàn)手動拖放。合使用,可以實現(xiàn)手動拖放。例例10-10(參看教材(參看教材P185-186)1聲明聲明 JSP聲明的作用是說明將要使用的變聲明的作用是說明將要使用的變量和方法,以保存信息或定義量和方法,以保存信息或定義JSP頁面可頁面可能需要調(diào)用的方法,其作為范圍是整個頁能需要調(diào)用的方法,其作為范圍是整個頁面。面。 因為因為JSP是基于是基于Java技術(shù)的,因此要技術(shù)的,因此要求像求像Java一樣,對于將要在一樣,對于將要在JSP程序中用程序中用到的變量和方法,必須先進行聲明,不然到的變量和方法,
56、必須先進行聲明,不然將會出錯。在聲明元素中聲明的變量和方將會出錯。在聲明元素中聲明的變量和方法,將在法,將在JSP頁面初始化時進行初始化。頁面初始化時進行初始化。2表達式表達式 表達式用于將表達式用于將JSP內(nèi)容轉(zhuǎn)換為字符串內(nèi)容轉(zhuǎn)換為字符串以便于包含在頁面的輸出中。表達式表示以便于包含在頁面的輸出中。表達式表示的是一個在腳本語言中被定義的表達式,的是一個在腳本語言中被定義的表達式,在運行后被自動轉(zhuǎn)化為字符串,然后插入在運行后被自動轉(zhuǎn)化為字符串,然后插入到這個表達式在到這個表達式在JSP文件中的位置顯示。文件中的位置顯示。因為表達式的值已經(jīng)被轉(zhuǎn)化為字符串,所因為表達式的值已經(jīng)被轉(zhuǎn)化為字符串,所以
57、能夠在一行文本中插入表達式。以能夠在一行文本中插入表達式。 表達式的使用格式如下:表達式的使用格式如下: 其中,其中,expression部分是表達式的內(nèi)容,部分是表達式的內(nèi)容,它是一個有計算結(jié)果的它是一個有計算結(jié)果的JSP表達式(注意,表達式(注意,表達式一定要有一個可以輸出的值),如表達式一定要有一個可以輸出的值),如數(shù)學計算式子、有返回值的函數(shù)、變量等。數(shù)學計算式子、有返回值的函數(shù)、變量等。3腳本片段腳本片段 腳本片段(腳本片段(Scriptlets)也稱為代碼片)也稱為代碼片段,它是一個有效的段,它是一個有效的Java程序段,是程序段,是JSP中的代碼部分。在這個部分中可以使用幾中的代碼部分。在這個部分中可以使用幾乎任何乎任何Java的語法來編制程序,它是嵌放的語法來編制程序,它是嵌放在在標記中的,語法格式如下:標記中的,語法格式如下:4注釋注釋 注釋是程序設(shè)計中的常用工具,注釋注釋是程序設(shè)計
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 04年O公司人工智能語音識別技術(shù)研發(fā)合同
- 《476例結(jié)腸癌臨床病理特征及預后比較分析》
- 《融合通信系統(tǒng)中分布式存儲引擎的設(shè)計與實現(xiàn)》
- 2024城市地鐵建設(shè)設(shè)備采購及安裝服務合同
- 2024年快遞店業(yè)務外包合同
- 2024年度舞臺設(shè)備安裝合同
- 2024年銀川客運車資格證考試題庫及答案
- 2024年烏魯木齊道路運輸客貨從業(yè)資格證考試題庫
- 2024年綿陽客運從業(yè)資格證理論考試題
- 2024年克拉瑪依客運上崗證模擬考試題答案
- 車間生產(chǎn)計劃完成情況統(tǒng)計表
- 品管圈(QCC)降低ICU護士床頭交接班缺陷率課件
- 《左道:中國宗教文化中的神與魔》讀書筆記模板
- 2023年初級游泳救生員理論知識考試題庫(濃縮400題)
- 施工現(xiàn)場臨時用電安全技術(shù)規(guī)范
- 同仁堂藥品目錄
- 社會問題概論
- 高中語文-如何讀懂古詩詞教學設(shè)計學情分析教材分析課后反思
- 虛假訴訟刑事控告書(參考范文)
- 部編版道德與法治四年級上冊第11課《變廢為寶有妙招》優(yōu)質(zhì)課件
- 2018年考研英語一真題和答案完整版
評論
0/150
提交評論