我正在使用richtext框来连接日志消息。
似乎我收到了一个错误:“此属性的设置太长了”
是否有尺寸限制?
我的代码很简单:我多次打电话:
Public Function showMessage(MyTxtBox As String, ByVal message As String)
Dim frm As Form
On Error GoTo showMessage_Error
Set frm = Forms.Item("FrmMessage")
frm(MyTxtBox).Parent.SetFocus
frm(MyTxtBox).Text = frm(MyTxtBox).Text & message & Chr(13) & Chr(10)
On Error GoTo 0
Exit Function
showMessage_Error:
'MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure showMessage"
frm(MyTxtBox).Text = ""
Resume Next
End Function
我使用MS Access`TextBox选择RichTextBox选项;
如您所见,我已使用
部分解决了问题frm(MyTxtBox).Text = ""
Resume Next
发生错误但这意味着我将丢失所有先前的消息。
难道这不可思议吗?
更新:表单不应自行关闭,因为它必须始终可见,因为在长处理任务期间多次将日志消息附加到表单(在我的情况下导入多个文件)。
答案 0 :(得分:2)
我假设你在谈论访问2007和富文本框控件。这里的其他人已经指向c#富文本框,我不会认为ms-access的限制是相同的。此控件对于ms访问是本机的。至于追加新行,您可以使用:
For i = 1 To strLines
strText = strText & "<br>"
strText = strText & "<font face=Arial size=5 color=blue>" & _
"This is comptuer generated " & i & " line of text" & _
"</font>"
Next i
因此,上面的br就是如何在富文本中添加新行。
至于限制?我不知道你为什么在这里达到极限。访问中的某些功能限制为255个字符。但是,表单上的富文本框应具有相当大的余地。您可能想要提及上下文以及如何使用富文本框。您是在谈论本机访问2007/2010富文本框,还是某些ActiveX或3d派对加载项?
答案 1 :(得分:1)
见RichTextbox MaxLength too small。 限制为2147483647个字符。
答案 2 :(得分:1)
您可能希望阅读Peter Duniho的完整答案,这是一个摘录:
根据文件, 默认定义的最大长度 RichTextBox的(MaxLength属性) 是Int32.MaxValue(约20亿), 但你以前会耗尽内存 你达到了这个极限(所以实用 限制实际上是多少虚拟 地址空间可用。)
- http://bytes.com/topic/c-sharp/answers/830657-result-richtextbox-appendtext-too-many-characters
答案 3 :(得分:1)
Text属性的setter似乎有2048个字符的限制。 MS Access文本框还具有value属性,可用于设置文本框中的文本,并且没有该限制。从表单中的代码中尝试以下内容:
Me.myTextBox.value = textVariableContainingVeryLongString
很抱歉,如果这对您来说太晚了,但我最近遇到了这个问题,答案可能对阅读此主题的人有价值。
答案 4 :(得分:0)
你没有解释你的代码应该做什么,也没有解释抛出的确切错误,也没有说明代码行。但我只是重写你的代码来修复明显的错误:
Public Function showMessage(ByVal strMyTxtBox As String, ByVal strMessage As String) As Boolean
On Error GoTo showMessage_Error
Dim frm As Form
Set frm = Forms!FrmMessage
DoCmd.SelectObject acForm, "FrmMessage", False
frm(strMyTxtBox) = frm(strMyTxtBox) & strMessage & vbCrLf
showMessage = True
exitRoutine:
Set frm = Nothing
Exit Function
showMessage_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in function showMessage"
Resume exitRoutine
End Function
我会做很多不同的事情,但这会清理你所拥有的代码,以便它不再有任何错误(据我所知)。
编辑:
如果我正在编写子程序来更新带有消息的表单上的控件,那么我就是这样实现的:
Public Sub AppendToControl(ByRef ctl As Control, ByVal varAppendValue, Optional ByVal bolScrollToEnd As Boolean = False)
Dim varNewValue As Variant
varNewValue = Mid(("12" + ctl) & (vbCrLf + varAppendValue), 3)
ctl = varNewValue
If bolScrollToEnd Then
ctl.SelStart = Len(ctl.Text & vbNullString)
End If
End Sub
你可以添加一个错误处理程序,但我不确定它的用途是什么,因为传递错误输出的有效参数几乎是不可能的。具体来说,原始控件可以为Null,传递的消息可以为Null,并且不会导致错误。它也永远不会有尾随换行符,因为代码的最后一条消息就是。
无论如何,你打电话给:
调用AppendToControl(MyForm!MyControl,“这是消息”,True)
我不会将SelectObject代码放在子程序本身中,因为它对我来说似乎不合适。无论如何,我不确定这是必要的还是可取的。
答案 5 :(得分:0)
我遇到了同样的问题。在文本框中发生此类错误时,请使用属性 .Value 而不是.Text。 在你的情况下,而不是:
frm(MyTxtBox).Text = frm(MyTxtBox).Text & message & Chr(13) & Chr(10)
使用:
frm.Controls("MyTxtBox").Value=frm.Controls("MyTxtBox").Value & message & Chr(13) & Chr(10)