在VB中怎么做使输入一个回车后,可以跳到另外一个函数?

yky0571 2003-08-11 07:41:47
我想在打入一个回车后,可以跳到另外一个函数,在VB里怎么实现它?
...全文
119 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yky0571 2003-08-11
  • 打赏
  • 举报
回复
谢谢各位,我是刚用VB来设计一个东西的,现在我明白啦
应该先选择相应的对象,然后对这个对象的kepress事件进行写语句。
比如我对一个输入框中的一个kepress事件这样写便可以实现我提出的功能
Private Sub InPwdText_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
CmdQD_Click //跳到我想要去的按钮功能
End If
End Sub
AustinLei 2003-08-11
  • 打赏
  • 举报
回复
是跳到另外一个过程吧?

if keyascii=13 then
Call 过程名
end if
举个例子:
Private Sub Command1_Click()
Call Command2_Click
End Sub

Private Sub Command2_Click()
MsgBox "Command2 Clicked."
End Sub

zyl910 2003-08-11
  • 打赏
  • 举报
回复

KeyPress 事件


此事件当用户按下和松开一个 ANSI 键时发生。

语法

Private Sub Form_KeyPress(keyascii As Integer)

Private Sub object_KeyPress([index As Integer,]keyascii As Integer)

KeyPress 事件语法包含下列部分:

部分 描述
object 一个对象表达式,其值是“应用于”列表中的一个对象。
index 一个整数,它用来唯一标识一个在控件数组中的控件。
keyascii 是返回一个标准数字 ANSI 键代码的整数。Keyascii 通过引用传递,对它进行改变可给对象发送一个不同的字符。将 keyascii 改变为 0 时可取消击键,这样一来对象便接收不到字符。


说明

具有焦点的对象接收该事件。一个窗体仅在它没有可视和有效的控件或 KeyPreview 属性被设置为 True 时才能接收该事件。一个 KeyPress 事件可以引用任何可打印的键盘字符,一个来自标准字母表的字符或少数几个特殊字符之一的字符与 CTRL 键的组合,以及 ENTER 或 BACKSPACE 键。KeyPress 事件过程在截取 TextBox 或 ComboBox 控件所输入的击键时是非常有用的。它可立即测试击键的有效性或在字符输入时对其进行格式处理。改变 keyascii 参数的值会改变所显示的字符。

可使用下列表达式将 keyascii 参数转变为一个字符:

Chr(KeyAscii)

然后执行字符串操作,并将该字符反译成一个控件可通过该表达式解释的 ANSI 数字:

KeyAscii = Asc(char)

应当使用 KeyDown 和 KeyUP 事件过程来处理任何不被 KeyPress 识别的击键,诸如:功能键、编辑键、定位键以及任何这些键和键盘换档键的组合等。与 KeyDown 和 KeyUp 事件不同的是,KeyPress 不显示键盘的物理状态,而只是传递一个字符。

KeyPress 将每个字符的大、小写形式作为不同的键代码解释,即作为两种不同的字符。而 KeyDown 和 KeyUp 用两种参数解释每个字符的大写形式和小写形式:keycode — 显示物理的键(将 A 和 a 作为同一个键返回)和 shift —指示 shift + key 键的状态而且返回 A 或 a 其中之一。

如果 KeyPreview 属性被设置为 True,窗体将先于该窗体上的控件接收此事件。可用 KeyPreview 属性来创建全局键盘处理例程。

注意...CTRL+@ 的键盘组合的 ANSI 编号是 0。因为 Visual Basic 将一个零值的 keyascii 识别为一个长度为零的字符串 (""),在应用程序中应避免使用 CTRL+@ 的组合。
zyl910 2003-08-11
  • 打赏
  • 举报
回复

KeyPreview 属性


返回或设置一个值,以决定是否在控件的键盘事件之前激活窗体的键盘事件。键盘事件为:KeyDown、KeyUp 和 KeyPress。

语法

object.KeyPreview [= boolean]

KeyPreview 属性语法有以下组成部分:

部分 描述
Object 对象表达式,其值是“应用于”列表中的一个对象。
Boolean 布尔表达式,指定如何接收事件。Setting 中有其说明。


设置值

boolean 的设置值为:

设置值 描述
True 窗体先接收键盘事件,然后是活动控件接收事件。
False (缺省值)活动控件接收键盘事件,而窗体不接收。


说明

可以用该属性,生成窗体的键盘处理程序,例如,应用程序利用功能键时,需要在窗体级处理击键,而不是为每个可以接收击键事件的控件编写程序。

如果窗体中没有可见和有效的控件,它将自动接收所有键盘事件。

若要在窗体级处理键盘事件、而不允许控件接收键盘事件时,在窗体的 KeyPress 事件中设置 KeyAscii 为 0,在窗体的 KeyDown 事件中设置 KeyCode 为 0。

注意 一些控件能够拦截键盘事件,以致窗体不能接收它们。这样的例子有:CommandButton 控件有焦点时的 ENTER 键、以及焦点在 ListBox 控件上时的方向键。
of123 2003-08-11
  • 打赏
  • 举报
回复
使用上面方法时,将Form的KeyPreview属性设置为True。
of123 2003-08-11
  • 打赏
  • 举报
回复
1
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte,ByVal _
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Const KEYEVENTF_KEYUP = &H2
Const VK_TAB = &H9

Private Sub Form_Keypress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
keybd_event VK_TAB, 0, 0, 0
keybd_event VK_TAB, 0, KEYEVENTF_KEYUP, 0
End If
End Sub


2
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

Const WM_KEYDOWN As Long = &H100
Const VK_TAB As Long = &H9
Dim retVal as long

Private Sub Form_Keypress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
retVal = PostMessage(Me.hwnd, WM_KEYDOWN, VK_TAB, 0)
End If
End Sub

在Win98下:
Private Sub Form_Keypress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
KeyAscii = vbKeyTab
End If
End Sub
也可以,但在某些Win2k版本下会锁死键盘。不保险。
victorycyz 2003-08-11
  • 打赏
  • 举报
回复
跳到另外一个函数? 不太明白。

if keyascii=13 then
varA=函数()
end if

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧