以下是屏蔽右键菜单和Ctrl+V键的方法。 Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 22 Then Timer1.Enabled = True End If End SubPrivate Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbRightButton Then Text1.Enabled = False Timer1.Enabled = True End If End SubPrivate Sub Timer1_Timer() Clipboard.Clear If Text1.Enabled = False Then Text1.Enabled = True End If Timer1.Enabled = False End Sub 思路是:在激活右键菜单前使文本框失效,以阻止右键菜单。在Ctrl+V粘贴前清空Clipboard。 但是,如果你的程序使用菜单栏或工具栏且有编辑项,也要做相应的屏蔽。 如有什么问题,大家再讨论。
Const KEY_CTL_X = 24
Const KEY_CTL_C = 3
Const KEY_DELETE = 46
Const KEY_BACKSPACE = 8
Const KEY_ENTRY = 13
Const KEY_LEFT = 37
Const KEY_RIGHT = 39
Const KEY_DOWN = 40
Const KEY_UP = 38
Const KEY_F8 = 119
Const KEY_F9 = 120
Const KEY_PGUP = 33
Const KEY_PGDOWN = 34
Const LeftMagin = 90 (还有其他) 。你可以text1_keypress 事件代码中判断keyascii 是否是以上这类值, 若是则不认为用户改变了数据,若不是则认为用户改变了数据。
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 22 Then
Timer1.Enabled = True
End If
End SubPrivate Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then
Text1.Enabled = False
Timer1.Enabled = True
End If
End SubPrivate Sub Timer1_Timer()
Clipboard.Clear
If Text1.Enabled = False Then
Text1.Enabled = True
End If
Timer1.Enabled = False
End Sub
思路是:在激活右键菜单前使文本框失效,以阻止右键菜单。在Ctrl+V粘贴前清空Clipboard。
但是,如果你的程序使用菜单栏或工具栏且有编辑项,也要做相应的屏蔽。
如有什么问题,大家再讨论。
应该可以充分利用Change事件啊!