如上圖,在vb中,怎樣定使用鍵盤方向鍵令游標上下左右自由移動呢

2022-06-24 03:31:46 字數 3897 閱讀 1853

1樓:書狂

假設這9個文字框是控制元件陣列,名字為text1,index從0-8,輸入如下**:

private sub text1_keydown(index as integer, keycode as integer, shift as integer)

dim temp as integer

temp = index

select case keycode

case 37 '左

temp = temp - 1

case 38 '上

temp = temp - 4

case 39 '右

temp = temp + 1

case 40 '下

temp = temp + 4

end select

if temp > 8 then

temp = 8

end if

if temp < 0 then

temp = 0

end if

text1(temp).setfocus

end sub

2樓:入夢心然

一般不用方向鍵,一般都按「tab」鍵

vb裡怎麼用鍵盤的方向鍵來控制**的移動啊??

3樓:

keydown 和 keyup 事件

keyup 和 keydown 事件報告鍵盤本身準確的物理狀態:按下鍵 (keydown) 及鬆開鍵 (keyup)。與此成對照的是,keypress 事件並不直接地報告鍵盤狀態— 它只提供鍵所代表的字元而不識別鍵的按下或鬆開狀態。

進一步舉例將有助於闡明這一差別。輸入大寫 "a" 時,keydown 事件獲得 "a" 的 ascii 碼。在輸入小寫 "a" 時,keydown 事件獲得相同的 ascii **。

為區分大小寫,這些事件使用 shift 引數。與此相對照的是,keypress 事件將字母的大小寫作為兩個不同的 ascii 字元處理。

keydown 和 keyup 事件通過提供下列兩引數返回輸入字元的資訊。

引數 描述

keycode 指示按下的物理鍵。這時將 "a" 與 "a" 作為同一個鍵返回。它們具有相同的 keycode 值。

但是請注意,鍵盤上的「1」和數字小鍵盤的「1」被作為不同的鍵返回,儘管它們生成相同的字元。

shift 指示 shift、ctrl 和 alt 鍵的狀態。只有檢查此引數才能判斷輸入的是大寫字母還是小寫字母。

keycode 引數

keycode 引數通過 ascii 值或鍵**常數來識別鍵。字母鍵的鍵**與此字母的大寫字元的 ascii 值相同。所以 "a" 和 "a" 的 keycode 都是由 asc("a") 返回的數值。

在下例中用 keydown 事件判斷是否按下了 "a" 鍵:

private sub text1_keydown(keycode as integer, _

shift as integer)

if keycode = vbkeya then msgbox "you pressed _

the a key."

end sub

按下 shift + "a" 或只按下 "a" 後都將顯示訊息框— 也就是說,對每種情況,引數都是正確的。為判斷按下的字母是大寫形式還是小寫形式需使用 shift 引數。請參閱本章後面的「shift 引數」主題。

數字與標點符號鍵的鍵**與鍵上數字的 ascii **相同。因此「1」和「!」的 keycode 都是由 asc("1") 返回的數值。

同樣,為檢測「!」,需使用 shift 引數。

keydown 和 keyup 事件可識別標準鍵盤上的大多數控制鍵。其中包括功能鍵 (f1-f16)、編輯鍵(home、page up、delete 等等)、定位鍵(right、left、up 和 down arrow)和數字小鍵盤上的鍵。可以通過鍵**常數或相應的 ascii 值檢測這些鍵。

例如:private sub text1_keydown(keycode as integer,shift as integer)

if keycode = vbkeyhome then msgbox "you pressed the home key."

end sub

詳細資訊 關於字元**的完整列表,請參閱「語言參考」的的「字符集 (0–127)」和「字符集 (128–255)」。「鍵**常數」提供了鍵**常數與對應的 ascii 值的完整列表,也可通過「物件瀏覽器」並搜尋 keycodeconstants 獲得此列表。

4樓:匿名使用者

你的**在**.在一個控制元件裡嗎?如果**在一個控制元件裡,直接移動控制元件就行啦.移動控制元件會吧,如果我要移動一個image1到窗體的左上角.那就這樣:

image1.move 0,0

0,0是image1的left和top.至於用鍵盤的方向鍵來控制,可以這樣:

private sub form_keydown(keycode as integer, shift as integer)

if keycode = 37 then image1.move image1.left - 10, image1.

top '左由於只向左移,top不變,所以也可以這樣(image1.left=image1.left - 10)直接減小left就行了.

下面也一樣.

if keycode = 38 then image1.move image1.left, image1.top - 10 '上

if keycode = 39 then image1.move image1.left + 10, image1.top '右

if keycode = 40 then image1.move image1.left, image1.top + 10 '下

end sub

private sub form_load()

form1.keypreview = true '啟用form1上的控制元件的鍵盤事件之前,優先啟用form1鍵盤事件。

end sub

是ascii吧.我也不知它叫什麼碼.我就叫它keycode.當你按下鍵盤任意一個鍵,keycode就等於一個整數.

反正按下鍵盤方向鍵的左鍵,keycode就等於37;上就是38.....

你可以這樣得到每個鍵的keycode:

private sub text1_keyup(keycode as integer, shift as integer)

text1 = keycode

end sub

5樓:匿名使用者

1)在窗體上佈置一個image控制元件並載入**2)窗體**

option explicit

private sub form_keydown(keycode as integer, shift as integer)

' 按下箭頭鍵,改變**的位置

select case keycode

case vbkeyup    '上箭頭鍵image1.top = image1.top - 1case vbkeydown  '下箭頭鍵image1.

top = image1.top + 1case vbkeyleft  '左箭頭鍵image1.left = image1.

left - 1case vbkeyright '右箭頭鍵image1.left = image1.left + 1end select

end sub

private sub form_load()'允許窗體截獲鍵盤

me.keypreview = true

'將窗體的度量單位從預設的twips改為pixels(畫素)me.scalemode = vbpixelsend sub

怎麼用vb設計一個可以用鍵盤上下左右鍵控制

在使用VB建設程式視窗,怎樣讓建設的程式視窗的「最大化」按鈕失效

窗體 form 屬性列表裡面,找到maxbutton屬性,設定為 false vb設計程式 設計程式,在窗體上建立3個命令按鈕,單擊後分別使窗體最大化 還原或最小化。病情分析 你好,後至少半年後要小孩比較好.子宮內膜會受到不同程度的損傷需要有一個恢復過程,如過早地再次懷孕,這時子宮內膜尚未徹底恢復,...

在VB中,怎樣尋找字串中的第N個指定字元的位置

注意函式 findstrn option explicit private sub command1 click dim s as string s abs01b902h9dso0h2e70de210j0q dim x as integer 第1個 0 的位置 x findstrn s,0 1 pr...

怎樣在Win10中使用Linux命令

工具 win10 方法如下 1 首先,點選螢幕左下角的win圖示,然後在彈出的選單中選擇 所有應用 2 在所有應用中找到並 windows powershell 資料夾,啟動其下的 windows powershell。3 這時,將會開啟一個命令列視窗。然後,請稍微等待一會,直到出現 powersh...