VB的KeyDown无法处理Tab键,那我该如何在TextBox中输入键盘上的Tab键呢?
22 个解决方案
#1
一个TAB=四个空格。
#2
当光标在TextBox上时,一旦按键盘上的Tab键,则光标自动切换到下一个控件
我的意思是,如何能让光标还停留在TextBox中,并且像Word一样向后空6个空格
并且在text1.text(实例)文本中加入chr(9)
我的意思是,如何能让光标还停留在TextBox中,并且像Word一样向后空6个空格
并且在text1.text(实例)文本中加入chr(9)
#3
TAB键对应的ASCII码是9,判断不要写在keydown事件里面,要写在keypress事件里
Private Sub Text1_KeyPress(KeyAscii As Integer)
MsgBox KeyAscii
End Sub
对话框弹出的返回值是 9
Private Sub Text1_KeyPress(KeyAscii As Integer)
if keyascii=9 then
按下TAB键需要执行的代码
else
没有按下TAB键需要执行的代码
end if
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
MsgBox KeyAscii
End Sub
对话框弹出的返回值是 9
Private Sub Text1_KeyPress(KeyAscii As Integer)
if keyascii=9 then
按下TAB键需要执行的代码
else
没有按下TAB键需要执行的代码
end if
End Sub
#4
谢谢star55的回复,这种方法我已经试过了,KeyPress事件的等级高于
KeyDown事件,所以KeyDown不能处理的,KeyPress同样无法处理。
KeyDown事件,所以KeyDown不能处理的,KeyPress同样无法处理。
#5
Private Sub Text1_KeyPress(KeyAscii As Integer)
if keyascii=9 then
text1=text1 + chr(9)
keyascii=0 '
else
'dddddd
end if
End Sub
if keyascii=9 then
text1=text1 + chr(9)
keyascii=0 '
else
'dddddd
end if
End Sub
#6
上面方法也不行
用hook试试吧
用hook试试吧
#7
同意温水的说法,我现在也想知道hook的用法
下载了几个源代码,系统提示有病毒,一直也没用过
哪位高手可以给小弟指点一下啊……
下载了几个源代码,系统提示有病毒,一直也没用过
哪位高手可以给小弟指点一下啊……
#8
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
GetKeyState(vbKeyTab)
GetKeyState(vbKeyTab)
#9
Option Explicit
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 9 Then
SendKeys " "
SendKeys " "
SendKeys " "
SendKeys " "
End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 9 Then
SendKeys " "
SendKeys " "
SendKeys " "
SendKeys " "
End If
End Sub
#10
dick8125可以把回复写的清楚一点吗?
小弟没看懂具体用法
小弟没看懂具体用法
#11
Private Declare Function GetKeyState Lib "User32" (ByVal nVirtKey As Long) As Integer
Const VK_TAB = &H9
Sub text1_LostFocus()
Dim iRetVal As Integer
iRetVal = GetKeyState(VK_TAB)
If iRetVal = 1 Then ' tab键按下
Text1.SetFocus
End If
End Sub
Const VK_TAB = &H9
Sub text1_LostFocus()
Dim iRetVal As Integer
iRetVal = GetKeyState(VK_TAB)
If iRetVal = 1 Then ' tab键按下
Text1.SetFocus
End If
End Sub
#12
用setwindowlong,getwindowlong
将失去焦点的消息拦截下来
在对其进行编程就可以了
将失去焦点的消息拦截下来
在对其进行编程就可以了
#13
可以设置一个具有焦点的控件如Picture1,并设置 Picture1.TabIndex=Text1.TabIndex+1,将 Picture1 隐藏于 Text1 控件之下,在Picture1_GotFocus()事件中将焦点再交给Text1就可以了
#14
谢谢各位高手的指点,问题已经顺利解决
顺道问一下,怎么把分数发给你们
顺道问一下,怎么把分数发给你们
#15
呵呵,标准解法:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 9 Then
Text1.SelText = Chr(9)
KeyCode = 0
End If
End Sub
不要动不动就用API,又危险又容易出错,兼容性也容易出问题。
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 9 Then
Text1.SelText = Chr(9)
KeyCode = 0
End If
End Sub
不要动不动就用API,又危险又容易出错,兼容性也容易出问题。
#16
学习了,谢谢楼上的回复!
#17
900126(息夫人)你的代码实现的条件是:只有一个文本况的情况下,我刚才试过了。如果还有其他控件,你加个COMMAND试试。保证不能实现
#18
\t
#19
const C_TAB=" " '注意是四个空格
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 9 Then
Text1.Text =Text1.Text+C_TAB
KeyCode = 0
End If
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 9 Then
Text1.Text =Text1.Text+C_TAB
KeyCode = 0
End If
End Sub
#20
大家目前讨论的方法都是只有一个文本框的情况
如果有几个可以获得焦点的控件,而且TabStop=True的情况下
大家想过怎么处理吗?
我刚加入论坛,请问怎么给各位大虾发送分数??
谢谢!!
如果有几个可以获得焦点的控件,而且TabStop=True的情况下
大家想过怎么处理吗?
我刚加入论坛,请问怎么给各位大虾发送分数??
谢谢!!
#21
点击"管理"
#22
lxxldd(菜鸟一个)你给出的代码问题一样,主要原因是在有两个控件(其中一个是要求的TEXTBOX)都能得到焦点时,在TEXTBOX中按TAB时,根本不会触发KeyDown事件!!!KEYPRESS都不会触发!!这才是问题所在!!!
难道要用钩子来实现?
难道要用钩子来实现?
#1
一个TAB=四个空格。
#2
当光标在TextBox上时,一旦按键盘上的Tab键,则光标自动切换到下一个控件
我的意思是,如何能让光标还停留在TextBox中,并且像Word一样向后空6个空格
并且在text1.text(实例)文本中加入chr(9)
我的意思是,如何能让光标还停留在TextBox中,并且像Word一样向后空6个空格
并且在text1.text(实例)文本中加入chr(9)
#3
TAB键对应的ASCII码是9,判断不要写在keydown事件里面,要写在keypress事件里
Private Sub Text1_KeyPress(KeyAscii As Integer)
MsgBox KeyAscii
End Sub
对话框弹出的返回值是 9
Private Sub Text1_KeyPress(KeyAscii As Integer)
if keyascii=9 then
按下TAB键需要执行的代码
else
没有按下TAB键需要执行的代码
end if
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
MsgBox KeyAscii
End Sub
对话框弹出的返回值是 9
Private Sub Text1_KeyPress(KeyAscii As Integer)
if keyascii=9 then
按下TAB键需要执行的代码
else
没有按下TAB键需要执行的代码
end if
End Sub
#4
谢谢star55的回复,这种方法我已经试过了,KeyPress事件的等级高于
KeyDown事件,所以KeyDown不能处理的,KeyPress同样无法处理。
KeyDown事件,所以KeyDown不能处理的,KeyPress同样无法处理。
#5
Private Sub Text1_KeyPress(KeyAscii As Integer)
if keyascii=9 then
text1=text1 + chr(9)
keyascii=0 '
else
'dddddd
end if
End Sub
if keyascii=9 then
text1=text1 + chr(9)
keyascii=0 '
else
'dddddd
end if
End Sub
#6
上面方法也不行
用hook试试吧
用hook试试吧
#7
同意温水的说法,我现在也想知道hook的用法
下载了几个源代码,系统提示有病毒,一直也没用过
哪位高手可以给小弟指点一下啊……
下载了几个源代码,系统提示有病毒,一直也没用过
哪位高手可以给小弟指点一下啊……
#8
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
GetKeyState(vbKeyTab)
GetKeyState(vbKeyTab)
#9
Option Explicit
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 9 Then
SendKeys " "
SendKeys " "
SendKeys " "
SendKeys " "
End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 9 Then
SendKeys " "
SendKeys " "
SendKeys " "
SendKeys " "
End If
End Sub
#10
dick8125可以把回复写的清楚一点吗?
小弟没看懂具体用法
小弟没看懂具体用法
#11
Private Declare Function GetKeyState Lib "User32" (ByVal nVirtKey As Long) As Integer
Const VK_TAB = &H9
Sub text1_LostFocus()
Dim iRetVal As Integer
iRetVal = GetKeyState(VK_TAB)
If iRetVal = 1 Then ' tab键按下
Text1.SetFocus
End If
End Sub
Const VK_TAB = &H9
Sub text1_LostFocus()
Dim iRetVal As Integer
iRetVal = GetKeyState(VK_TAB)
If iRetVal = 1 Then ' tab键按下
Text1.SetFocus
End If
End Sub
#12
用setwindowlong,getwindowlong
将失去焦点的消息拦截下来
在对其进行编程就可以了
将失去焦点的消息拦截下来
在对其进行编程就可以了
#13
可以设置一个具有焦点的控件如Picture1,并设置 Picture1.TabIndex=Text1.TabIndex+1,将 Picture1 隐藏于 Text1 控件之下,在Picture1_GotFocus()事件中将焦点再交给Text1就可以了
#14
谢谢各位高手的指点,问题已经顺利解决
顺道问一下,怎么把分数发给你们
顺道问一下,怎么把分数发给你们
#15
呵呵,标准解法:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 9 Then
Text1.SelText = Chr(9)
KeyCode = 0
End If
End Sub
不要动不动就用API,又危险又容易出错,兼容性也容易出问题。
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 9 Then
Text1.SelText = Chr(9)
KeyCode = 0
End If
End Sub
不要动不动就用API,又危险又容易出错,兼容性也容易出问题。
#16
学习了,谢谢楼上的回复!
#17
900126(息夫人)你的代码实现的条件是:只有一个文本况的情况下,我刚才试过了。如果还有其他控件,你加个COMMAND试试。保证不能实现
#18
\t
#19
const C_TAB=" " '注意是四个空格
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 9 Then
Text1.Text =Text1.Text+C_TAB
KeyCode = 0
End If
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 9 Then
Text1.Text =Text1.Text+C_TAB
KeyCode = 0
End If
End Sub
#20
大家目前讨论的方法都是只有一个文本框的情况
如果有几个可以获得焦点的控件,而且TabStop=True的情况下
大家想过怎么处理吗?
我刚加入论坛,请问怎么给各位大虾发送分数??
谢谢!!
如果有几个可以获得焦点的控件,而且TabStop=True的情况下
大家想过怎么处理吗?
我刚加入论坛,请问怎么给各位大虾发送分数??
谢谢!!
#21
点击"管理"
#22
lxxldd(菜鸟一个)你给出的代码问题一样,主要原因是在有两个控件(其中一个是要求的TEXTBOX)都能得到焦点时,在TEXTBOX中按TAB时,根本不会触发KeyDown事件!!!KEYPRESS都不会触发!!这才是问题所在!!!
难道要用钩子来实现?
难道要用钩子来实现?