有没有办法禁用在文本框中输入多行条目(即,我想阻止用户使用Ctrl-Enter换行)?
我能够通过使用 KeyPress 事件来完成它。以下是代码示例:
Private Sub SingleLineTextBox_ KeyPress(ByRef KeyAscii As Integer)
If KeyAscii = 10 _
or KeyAscii = 13 Then
'10 -> Ctrl-Enter. AKA ^J or ctrl-j
'13 -> Enter. AKA ^M or ctrl-m
KeyAscii = 0 'clear the the KeyPress
End If
End Sub
我以前的做法(最后一次使用Access是在97年左右,所以我的记忆不太好)是触发一个键盘抬起事件并执行一个VBA函数。这类似于现代Web表单应用程序中使用AJAX建议文本框的方法,但我记得如果你的Access表单有其他频繁发生的事件,比如鼠标在整个表单对象上移动,它可能会出现问题。
If InStr(Me!MyMemoControl, vbCrLf) Then
Me!MyMemoControl = Replace(Me!MyMemoControl, vbCrLf, vbNullString)
End If
Public Sub PreventNewlines(ByRef KeyAscii As Integer)
If KeyAscii = 10 Or KeyAscii = 13 Then KeyAscii = 0
End Sub
Private Sub textbox_KeyPress(KeyAscii As Integer)
Call PreventNewlines(KeyAscii)
End Sub
如果您不希望事件干扰,可以为文本框设置验证规则属性
NOT LIKE "*"+Chr(10)+"*" OR "*"+Chr(13)+"*"
您可能还希望将验证文本设置为具体解释为何出现错误框。
Jason的回答很好。只是补充一下...
如果你想让用户可以留空文本框,你可以使用这个:
不像 ""+Chr(10)+"" 或 ""+Chr(13)+"" 或为空
对于这个问题我不是完全确定,但是当你渲染内容时应该能够删除换行符,或者运行一个VB脚本来清除它,你只需要检查chr(13)或vbCrLf即可。