vb.net - VBnet:从类中引用表单对象
问题描述
计划
我确定这个问题一定已经在某个地方得到了回答,因为它非常基本,但不幸的是我还没有找到答案......
我的计划是创建一个简单的日志函数,它使用 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 并传递给 log 类:
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
解决方案
在调用 New 之前,不会初始化 RtbxLog。这通常在 InitializeComponent() 期间完成。我建议您在调用 InitializeComponent 之后创建您的日志(在新版本中)。
另外,我是否建议您创建自己的控件(从 RichTextBox 继承)。或者另一种选择是您的日志类仅存储信息,表单负责将其显示在文本框中。
推荐阅读
- activemq-artemis - ActiveMQ Artemis 错误 - AMQ224088:发生握手时超时(10 秒)
- excel - 通过连接两个表将多行合并到另一个工作表中的一行
- visual-studio-app-center-push - 无法安装“cordova-plugin-appcenter-analytics”:未定义
- css - 如何在 gulp.js 文件中定位单个文件
- visual-studio-code - vscode - 如何让文件搜索(不是内容)包含(git-)被忽略的文件
- linq - EF Core-使用 Order by 子句对结果进行排序不起作用
- c# - C# Firebase Cloud Message 使用主题消息发送多个 Web JS 通知
- java - 如何告诉 JAXB,该元素是 Root 的 Child?
- wordpress - 如何在 Wordpress 中隐藏 AMP 帖子底部的评论按钮?
- amcharts - AmCharts 系列图表与第二两行类别