有沒有辦法在文本框中禁止輸入多行條目(即,我想阻止用戶按Ctrl鍵輸入以獲取換行符)?禁用MS Access中的多行字段
回答
我能夠使用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
不完全確定那個,你應該可以在你渲染內容時刪除換行符,或者甚至運行一個vbscript來清除它,你只需要檢查chr(13)或vbCrLf。
不是我想要的。這意味着我不得不在後臺(而不是所見即所得)中使用用戶的數據,或拋出錯誤,我會在後面提出很多解釋。不過謝謝。 – BIBD 2008-09-11 14:30:24
我之前(以及我在Access中工作的最後一次是在97年左右,所以我的記憶並不那麼熱)的方式正在引發鍵盤事件並執行VBA功能。這與您在現代webform應用程序中使用AJAX建議文本框所做的操作類似,但是我記得,如果Access窗體的其他事件經常發生在整個窗體對象上的onMouseMove等其他事件,它可能會被絆倒。
再次,每次擊鍵都會首先發生KeyUp事件,這會導致屏幕閃爍。而且它效率低下 - 最好的事件仍然是用於編輯備忘錄的控件的AfterUpdate事件,因爲它只觸發一次。 – 2008-09-17 03:02:34
該評論應該是這樣的:KeyUp事件每次擊鍵都會引發... – 2008-09-17 03:03:08
如果你不希望事件的干擾,可以設置有效性規則屬性的文本框是
NOT LIKE "*"+Chr(10)+"*" OR "*"+Chr(13)+"*"
你可能還需要設置驗證文本來具體解釋Access爲什麼拋出一個錯誤框。
使用KeyPress事件意味着每次用戶鍵入時都會觸發您的代碼。這可能導致屏幕閃爍和其他問題(OnChange事件將是相同的)。
在我看來,你應該使用單個事件去除CrLf,並且正確的事件將是AfterUpdate。你會簡單地這樣做:
If InStr(Me!MyMemoControl, vbCrLf) Then
Me!MyMemoControl = Replace(Me!MyMemoControl, vbCrLf, vbNullString)
End If
的使用注意事項訪問全局常量的,vbCrLf(爲CHR(10)& CHR(13))和vbNullString(零長度字符串)。
使用驗證規則意味着您要向用戶彈出一個醜陋的錯誤消息,但爲他們提供了很少的工具來糾正問題。在我看來,AfterUpdate方法對用戶來說更簡潔,更簡單。
謝謝伊恩和BIBD。我根據可重用的答案創建了一個公共子組。
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
屏幕閃爍不應該是一個問題,因爲這些都是處理的事件,而不是持續輪詢(並且每個控制的進一步限制範圍)。對我來說似乎是一個無效的參數,因爲每個文本編輯器在每次擊鍵時都執行一些代碼。
謝謝
- 1. 的MS Access多行選擇字段
- 2. MS Access中'嵌套字段'
- 3. MS Access 2007年JOIN多個字段
- 4. MS Access:突出顯示MS Access報告中的特定字段
- 5. 在C中使用MS Access Lookup字段#
- 6. 字段值在MS Access SQL
- 7. 用戶定義字段的MS Access PIVOT
- 8. MS Access中的組合字段主鍵?
- 9. MS Access多字段搜索,空字段或列表框中的多個選項
- 10. 禁用MS Access中的設計視圖
- 11. MS Access中使用多值字段查詢
- 12. 在MS Access中合併字段
- 13. 通過MS Access中的多個字段連接兩個表格
- 14. 查詢將多個行值合併到MS-Access 2003中的一個字段中?
- 15. 的MS Access - 文本字段排名
- 16. 的是/否字段在MS Access
- 17. 來自Textbox的MS Access選擇字段
- 18. MS Access從多個字段中查找最長記錄
- 19. 在MS-ACCESS中創建交互式多字段搜索欄
- 20. 帶Access數字字段的MS Access數據庫
- 21. 在MS Access中查找多行重複
- 22. ms access 2007在查詢中組合多值字段與單值字段
- 23. MS Access VBA啓用/禁用文本框
- 24. MS Access中的行總數
- 25. 在MS Access中將字段值作爲SQL執行
- 26. MS Access SQL查詢不同的返回多個字段
- 27. MS Access查詢:一個特定字段的多個源表
- 28. MS Access加入創建新字段
- 29. MS ACCESS添加計算字段
- 30. MS Access,SQL Server映像字段
這不是最好的解決方案,因爲它使用了錯誤的事件,並且每次擊鍵都會觸發。控件的AfterUpdate事件更合適,並且只觸發一次。 – 2008-09-17 03:01:15
它爲我工作。沒有屏幕閃爍。在這種情況下,我希望防止最初的錯誤輸入RATHER,而不是稍後嘗試並篩選出來,並給用戶一個鈍的錯誤或改變他們對它們的輸入。 – BIBD 2008-09-17 22:11:51