1樓:
定義一個窗體變數
dim keyvalue as integer
private sub form_load()
keyvalue = -1
end sub
private sub form_keydown(keycode as integer, shift as integer)
if keyvalue = keycode then exit sub'新增
select case keycode
case 37 'left
mscomm1.output = "le"
txtlinkmessage.text = "向左"
case 38 'up
mscomm1.output = "go"
txtlinkmessage.text = "向前"
case 39 'right
mscomm1.output = "ri"
txtlinkmessage.text = "向右"
case 40 'down
mscomm1.output = "ba"
txtlinkmessage.text = "向後"
case else
keyascii = 0
end select
keyvalue = keycode'新增
end sub
private sub form_keyup(keycode as integer, shift as integer)
select case keycode
case 37 'left
mscomm1.output = "tu"
case 39 'right
mscomm1.output = "tu"
case 38 'up
mscomm1.output = "di"
case 40 'down
mscomm1.output = "di"
end select
if keyvalue = keycode then keyvalue = -1'新增
end sub
2樓:匿名使用者
建一個按鍵asc碼的對映表,對每個鍵設定一個bool型別的標誌表示是否按下,每次按鍵事件先查表,確定其按下與否,在決定是否響應keydown事件
3樓:匿名使用者
設定一個變數,在keydown事件中=true,在keyup中=false;在keydown中判斷如為真就不要再傳送了
4樓:匿名使用者
可以加一個標記num,如果num=0,說明是第一次按下,按下後置num=num+1,如果num=0,則傳送,否則不傳送。修改如下:
dim num as integer'定義一個全域性變數private sub form_keydown(keycode as integer, shift as integer)
if num =0 then
select case keycode
case 37 'left
mscomm1.output = "le"
txtlinkmessage.text = "向左"
case 38 'up
mscomm1.output = "go"
txtlinkmessage.text = "向前"
case 39 'right
mscomm1.output = "ri"
txtlinkmessage.text = "向右"
case 40 'down
mscomm1.output = "ba"
txtlinkmessage.text = "向後"
case else
keyascii = 0
end select
end if
num=num+1
end sub
private sub form_keyup(keycode as integer, shift as integer)
select case keycode
case 37 'left
mscomm1.output = "tu"
case 39 'right
mscomm1.output = "tu"
case 38 'up
mscomm1.output = "di"
case 40 'down
mscomm1.output = "di"
end select
num=0
end sub
vb keydown事件
5樓:匿名使用者
把我下邊這段**複製過去,然後替換掉你的全部**,就好了,我試過了.
private sub form_load()me.keypreview = true
end sub
private sub form_keydown(keycode as integer, shift as integer)
if keycode = vbkeya thenmsgbox "您按了" & chr(keycode)end if
end sub
6樓:匿名使用者
把form窗體(比如說form1)的keypreview屬性的值改為true就可以了
7樓:匿名使用者
可以的啊 我試了 可以的 why你不行呢 ?你是怎麼做的啊?你這個**是keydown時間哦 不能用keypress 而且只能按a鍵才有反應的
8樓:明蕊暨子愛
你可以用image來代替按鈕··我原來做俄羅斯方塊就是這麼做的··觸發image_click事件
我試過設定form的接受按鈕屬性··可是沒什麼用··呼呼
vb中form_keydown事件
9樓:
form的keypreview屬性必須=true,這個事件才能在按鍵盤時觸發。
10樓:匿名使用者
當在窗體上按鍵時觸發,如果窗體有可獲得焦點的控制元件如command、textbox、listbox等,該事件將無法觸發。
private sub form_keydown(keycode as integer, shift as integer)
print keycode,shift
end sub
其中keycode為按鍵的ascii,shift為控制鍵ctrl、shift和alt,其中ctrl鍵=2,shift鍵=1,alt鍵=4,ctrl+shift=2+1=3...,即:如果按住ctrl+z,則keycode=90,shift=2
11樓:匿名使用者
觸發順序:keydown keyup keypress
keycode是對應鍵盤的按鍵編碼,一個按鍵只有一個編碼,不是ascii碼,也就是說大寫a和小寫a的keycode是一樣,如果有小鍵盤,那麼字母上方的數字鍵和小鍵盤的數字鍵的keycode是不一樣的,shift是表示是否有沒有按shift、ctrl、alt組合鍵的情況,如可以是shift+ctrl+x(代表其他鍵),如果想知道每個按鍵的值可以用print方法把它輸出出來
希望回答對你有幫助
在vb的程式設計中,按enter鍵就觸發的事件 怎麼實現?
12樓:
在vb裡,常量vbcr對應回車鍵的ascii,就是10;常量vblf對應換行鍵的ascii,就是13;vbcrlf是回車加換行。
vbkeyenter需要定義常量13才能使用
13樓:
vbkeyenter不是vb庫標準常量,換句話說,如果使用者沒定義vbkeyenter,則vbkeyenter值為零,根本沒有這個鍵值!
您錯寫的vbkeyenter應該寫成「vbkeyreturn」(13)換行鍵。
注:建議樓主開啟變數檢查開關option explicit開啟此開關後,若執行樓主貼出來的**,程式會丟擲異常「變數未定義。」
希望對樓主有幫助。
14樓:
3條回答都很好,也足夠了
VB程式設計問題,VB程式設計中的迴圈問題
有個 自己去看吧,都是考試的。編一個求圓周長的程式。輸入半徑,得到周長和麵積。試試看。建議你不要光學vb,畢竟它有太多缺點,很多事做不了 如果是對basic語言感興趣的話,到不如去學哈freebasic,powerbasic,purebasic,它們都功能超級強大 freebasic甚至可以寫作業系...
數字加密VB程式設計,VB中如何編寫一個加密程式
在窗體上有兩個控制元件,command1和text1 程式執行時在文字框中輸入四位數字,如果不是四位提示請輸入四位。如下 private sub command1 click dim a 4 as integer dim i as integer if len 4 then 如果輸入的不是四位數要求...
vb程式設計 從m到n的奇數的乘積,vb程式設計 1到m之間偶數之積
判棧抄空 int stackempty seqstack s 入棧 void push seqstack s,elementtype x 出棧 elementtype pop seqstack s 答案 求n到m之間所有奇數之和 vb vb編寫程式 用來計算m的n次方 新建工程,新增command1...