初学者 VB代码求解
请求此段代码的详解尤其是粗体这段
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim ShiftDown, AltDown, CtrlDown
Dim Txt As String
ShiftDown = (Shift And vbShiftMask) > 0 '
AltDown = (Shift And vbAltMask) > 0 '
CtrlDown = (Shift And vbCtrlMask) > 0 '
If KeyCode >= 48 And KeyCode <= 105 Then
If ShiftDown And AltDown And CtrlDown Then
Txt = "Shif+Alt+Ctrl"
ElseIf ShiftDown And AltDown Then
Txt = "Shif+Alt"
ElseIf ShiftDown And CtrlDown Then
Txt = "Shif+Ctrl"
ElseIf CtrltDown And AltDown Then
Txt = "Ctrl+Alt"
ElseIf ShiftDown Then
Txt = "Shif"
ElseIf AltDown Then
Txt = "Alt"
ElseIf CtrlDown Then
Txt = "Ctrl"
ElseIf Shift = 0 Then
Txt = ""
End If
Txt = Txt + Chr(KeyCode)
txt1.Text = "您按下了" + Txt
End If
End Sub
补充:主要是Dim ShiftDown, AltDown, CtrlDown
Dim Txt As String
ShiftDown = (Shift And vbShiftMask) > 0 '
AltDown = (Shift And vbAltMask) > 0 '
CtrlDown = (Shift And vbCtrlMask) > 0 '
If KeyCode >= 48 And KeyCode <= 105 Then
这一段
追问:>0是什么意思还有 48和105之间是什么意思?
不好意思啊 菜鸟级 只有一本书
答案:这样,加一个过程,把窗体的keypreview属性设置为 true就可以接收按键了。
Private Sub Form_Load()
Form1.KeyPreview = True
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim ShiftDown, AltDown, CtrlDown
Dim Txt As String
ShiftDown = (Shift And vbShiftMask) > 0 '
AltDown = (Shift And vbAltMask) > 0 '
CtrlDown = (Shift And vbCtrlMask) > 0 '
If KeyCode >= 48 And KeyCode <= 105 Then
If ShiftDown And AltDown And CtrlDown Then
Txt = "Shif+Alt+Ctrl"
ElseIf ShiftDown And AltDown Then
Txt = "Shif+Alt"
ElseIf ShiftDown And CtrlDown Then
Txt = "Shif+Ctrl"
ElseIf CtrltDown And AltDown Then
Txt = "Ctrl+Alt"
ElseIf ShiftDown Then
Txt = "Shif"
ElseIf AltDown Then
Txt = "Alt"
ElseIf CtrlDown Then
Txt = "Ctrl"
ElseIf Shift = 0 Then
Txt = ""
End If
Txt = Txt + Chr(KeyCode)
txt1.Text = "您按下了" + Txt
End If
End Sub
仔细看下MSDN
KeyDown、KeyUp 事件
这些事件是当一个对象具有焦点时按下 ( KeyDown ) 或松开 ( KeyUp ) 一个键时发生的。(要解释 ANSI 字符,应使用 KeyPress 事件。)
语法
Private Sub Form_KeyDown(keycode As Integer, shift As Integer)
Private Sub object_KeyDown([index As Integer,]keycode As Integer, shift As Integer)
Private Sub Form_KeyUp(keycode As Integer, shift As Integer)
Private Sub object_KeyUp([index As Integer,]keycode As Integer, shift As Integer)
KeyDown 和 KeyUp 事件包括下列部分:
部分 | 描述 |
object | 一个对象表达式,其值是“应用于”列表中的一个对象。 |
index | 是一个整数,它用来唯一标识一个在控件数组中的控件。 |
keycode | 是一个键代码,诸如 vbKeyF1 ( F1 键)或 vbKeyHome ( HOME 键)。要指定键代码,可使用对象浏览器中的 Visual Basic ( VB ) 对象库中的常数。 |
shift | 是在该事件发生时响应 SHIFT ,CTRL 和 ALT 键的状态的一个整数。shift 参数是一个位域,它用最少的位响应 SHIFT 键(位 0 )、CTRL 键(位 1 )和 ALT 键(位 2 )。这些位分别对应于值 1、2 和 4。可通过对一些、所有或无位的设置来指明有一些、所有或零个键被按下。例如,如果 CTRL 和 ALT 这两个键都被按下,则 shift 的值为 6。 |
说明
对于这两个事件来说,带焦点的对象都接收所有击键。一个窗体只有在不具有可视的和有效的控件时才可以获得焦点。虽然 KeyDown 和 KeyUp 事件可应用于大多数键,它们最经常地还是应用于:
- 扩展的字符键如功能键等。
- 定位键。
- 键盘修饰键和按键的组合。
- 区别数字小键盘和常规数字键。
在需要对按下和松开一个键都响应时,可使用 KeyDown 和 KeyUp 事件过程。
下列情况不能引用 KeyDown 和 KeyUp 事件:
- 窗体有一个 CommandButton 控件,并且 Default 属性设置为 True 时的 ENTER 键。
- 窗体有一个 CommandButton 控件,并且 Cancel 属性设置为 True 时的 ESC 键。
- TAB 键。
KeyDown 和 KeyUp 用两种参数解释每个字符的大写形式和小写形式:keycode —显示物理的键(将 A 和 a 作为同一个键返回)和 shift —显示 shift + key 键的状态而且返回 A 或 a 其中之一。
如果需要测试 shift 参数,可使用该参数中定义各位的 shift 常数。该常数有下列值:
常数 | 值 | 描述 |
vbShiftMask | 1 | SHIFT 键的位屏蔽。 |
VbCtrlMask | 2 | CTRL 键的位屏蔽。 |
VbAltMask | 4 | ALT 键的位屏蔽。 |
该常数用作位屏蔽。它可被用来测试任何键组合。
测试一个条件时,首先将每个结果分配给一个临时整数变量,然后将 shift 与一个位屏蔽进行对比。如下例,可用 And 运算符和 shift 参数一起来测试条件是否大于 0。该条件说明该修正键被按下:
ShiftDown = (Shift And vbShiftMask) > 0
可按此例在一个过程中测试任何条件的组合:
If ShiftDown And CtrlDown Then
注意 如果 KeyPreview 属性被设置为 True,则一个窗体先于该窗体上的控件接收到此事件。可用 KeyPreview 属性来创建全局键盘处理例程。
dim 变量名,变量类型
上一个:VB控件的制作
下一个:常用高中VB代码