计划
我肯定一定在某个地方回答过这个问题,因为它很基本,但是很遗憾,我还没有找到答案...
我的计划是创建一个简单的日志函数,该函数使用RichTextField作为输出并实现诸如Add,AddLine,RemoveLine,ReplaceLine等功能。
什么不起作用
每当我尝试从日志类中访问RichTextBox对象时,都会收到“无”的异常。
我的方法
想法是将对RichTextBox的引用存储在自己的类中,该引用是在创建新的类实例时传递的:
Public Class Log
Dim _logBox As RichTextBox
Public Sub New(ByRef logBox As RichTextBox)
_logBox = logBox
End Sub
Public Sub AddLine(ByVal text As String)
Me.Add(text)
_logBox.AppendText(Environment.NewLine)
End Sub
End Class
在我的Form类中,在启动时创建了RichTextBox并将其传递给日志类:
Public Class Form1
Dim log As New Log(RtbxLog) ' RtbxLog: RichTextBox object created on form
[on some button click event]
log.AddLine("entry with new line") ' THIS CAUSES "nothing" EXCEPTION
End Class
答案 0 :(得分:2)
RtbxLog不会被初始化,直到调用New。这通常在InitializeComponent()期间完成。我建议您在调用InitializeComponent之后(在新版本中)创建日志。
另外,我是否建议您创建自己的控件(继承自RichTextBox)。或者另一个选择是您的日志类仅存储信息,而表单负责在文本框中显示该信息。