可把CHECKBOX设为控件数组,然后在CHECKBOX的KEYDOWN事件中编程。如: if keycode=vbkeyright then check(4).setfocus end if
可把CHECKBOX设为控件数组,然后在CHECKBOX的KEYDOWN事件中编程。如: private sub checkbox_keydown(index as integer....) select case index case 1 if keycode=vbkeyright then check(4).setfocus end if end select end sub
你可以使用以下办法: 在bas中: Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long Public Declare Function GetCurrentThreadId Lib "kernel32" () As Long Public Const WH_KEYBOARD = 2
Public gLngKeyHook As Long Dim currentid As Integer
Public Function KeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If wParam = 37 Then .... ElseIf wParam = 39 Then .... ElseIf wParam = 38 Then .... ElseIf wParam = 40 Then .... End If KeyboardProc = -1 End Function在form的load中: currentid = 2 gLngKeyHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, GetCurrentThreadId)在form的unload中: UnhookWindowsHookEx gLngKeyHook还剩下很多工作要做,如处理焦点,和键盘消息的传递(用到CallNextHookEx )
很简单的 我已经在“VB-CheckBox太神奇了...”一文中回答你了,只要稍微改改: 1)确保check1.CausesValidation 属性值设置为True 2)Private Sub Check1_Validate(Cancel As Boolean) Check4.setfocus End Sub vbjj,是不是该把两个题目的分都给我,快!!!
依次类推。
不就可以了吗?
再者就是设置几个checkbox的TAB 键顺序
可能需要钩子函数拦截键盘信息,再手工处理checkbox的焦点
if keycode=vbkeyright then
check(4).setfocus
end if
private sub checkbox_keydown(index as integer....)
select case index
case 1
if keycode=vbkeyright then
check(4).setfocus
end if
end select
end sub
在check2得到焦点时,
若按下up arrow键,check1得到焦点,
若按下down arrow键时,check3得到焦点,
若按下left arrow键时,焦点不移动,
若按下right arrow键时,check5得到焦点,
我是想使用左右上下键来控制checkbox的焦点,而不是按照tabindex的顺序。
至于tony_yuan所说的:
可能需要钩子函数拦截键盘信息,再手工处理checkbox的焦点
请明示vbjj 3.7 9:14
在bas中:
Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Public Const WH_KEYBOARD = 2
Public gLngKeyHook As Long
Dim currentid As Integer
Public Function KeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If wParam = 37 Then
....
ElseIf wParam = 39 Then ....
ElseIf wParam = 38 Then ....
ElseIf wParam = 40 Then ....
End If
KeyboardProc = -1
End Function在form的load中:
currentid = 2
gLngKeyHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, GetCurrentThreadId)在form的unload中:
UnhookWindowsHookEx gLngKeyHook还剩下很多工作要做,如处理焦点,和键盘消息的传递(用到CallNextHookEx )
谢谢各位,这么赏脸...小弟感激流涕...
望大家能再帮我看看"?动动笔,就送118分(Visual basic)[Visual Basic]"这个问题,Ok? ^_^
按需要将tabIndex顺序设置即可。
我已经在“VB-CheckBox太神奇了...”一文中回答你了,只要稍微改改:
1)确保check1.CausesValidation 属性值设置为True
2)Private Sub Check1_Validate(Cancel As Boolean)
Check4.setfocus
End Sub
vbjj,是不是该把两个题目的分都给我,快!!!
在表单上先放容器空间Grid(类似电子表格),再把各CheckBox放到Grid里边,不知行不,我无法给出VB程序。
那位高手,如果能不加CODE,就能解决的话,不要忘了告诉我。
我的伊妹儿:[email protected]