我有一个带有文本框的访问表单,用户可以使用列表框更新或直接编辑它,如果用户开始从此文本框中删除,我需要执行操作,如果他开始添加数据只有在他开始从中删除时才会出现问题,例如:
Private Sub textbox_AfterUpdate()
If Me.[textbox].SelStart = Len(Me.[textbox].Text) - 1 Then
' do something
else
' do something else
End If
End Sub
答案 0 :(得分:2)
您可能希望使用KeyDown
事件代替AfterUpdate
这会捕获 Backspace 和 Del 按钮。
Private Sub Text0_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 8 Or KeyCode = 46 Then
MsgBox "Text was deleted"
End If
End Sub
可能有其他删除文本的情况,例如 Ctrl + X 所以你可以捕获所有这些。
答案 1 :(得分:1)
您可能想要考虑更改事件,text属性是具有焦点的控件的当前未保存内容,value属性是具有焦点的控件的已保存内容。
更改的优点是用户不能简单地将字母插入现有字符串,例如,用户不能更改20米到200米。
Private Sub AText_Change()
''If the current content is the same as the
''previous content with something added
If Me.AText.Text Like Me.AText.Value & "*" Then
''Ok
Else
''Problem
MsgBox "Not allowed"
Me.AText = Me.AText.Value
End If
End Sub
您还可以允许保存的内容成为当前内容的子字符串。