创建表单时出现错误。有关详细信息,请参见Exception.InnerException。错误是:对象引用未设置为对象的实例。

4

在尝试调试我的表单时,我遇到了这个错误,但我完全看不到错误在哪里(也没有高亮显示错误位置),有人有什么建议吗?

创建表单时发生错误。 请参阅 Exception.InnerException 以获取详细信息。 错误是:对象引用未设置为对象的实例。

Dim dateCrap As String = "Date:"
Dim IPcrap As String = "Ip:"
Dim pcCrap As String = "Computer:"
Dim programCrap As String = "Program:"

Dim textz As String
Dim sep() As String = {vbNewLine & vbNewLine}
Dim sections() As String = Text.Split(sep, StringSplitOptions.None)

Dim NewArray() As String = TextBox1.Text.Split(vbNewLine)


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    textz = TextBox1.Text
End Sub

错误是在什么时候出现的?请从你的问题中删除所有不相关的代码。 - Konrad Rudolph
1
一旦我调试,这个问题的重点就在于找出错误所在,因此它可能出现在任何地方 - 因此我把所有内容都发布了。 - Ben
错误肯定不可能出现在任何 Buttonx_Click 事件中,对吧? - Konrad Rudolph
3个回答

4
错误出现在这里:
Dim textz As String = TextBox1.Text

还有这里:

Dim NewArray() As String = TextBox1.Text.Split(vbNewLine)

可能还有这里:

Dim sections() As String = Text.Split(sep, StringSplitOptions.None)

您不能像这样初始化成员,因为此代码基本上是在构造函数中执行的,在TextBox1(或任何其他控件/属性)初始化之前执行,因此它是Nothing

将所有引用控件的初始化放在Form_Load事件中 - 这就是它存在的原因。


1
同样的结果,似乎无法找到其他考虑你所建议的东西。 - Ben
@Ben:如果结果相同,那么你可能忽略了类似的初始化。从你的表单中删除所有其他代码以减少问题。 - Konrad Rudolph

3

在“选项>常规”选项卡下的调试部分关闭“仅限我的代码”。这将显示出确切错误的来源。


我遇到了与 OP 类似的问题,但我的问题并不涉及将模块级变量设置为表单控件。相反,我的问题是与在表单上默认选中复选框有关,这会触发 checkedchanged 事件,调用一个子例程,该子例程访问尚未初始化的变量。通过这样做,帮助我找出了问题(我在我的表单中添加了 Sub Main,并在 InitializeComponent() 调用周围包装了一个 Try...Catch)。 - RianBattle

0
我有相同的症状 - 无法开始调试,因为错误出现在我的任何代码开始运行之前。最终追踪到它是由于一个调整大小事件处理程序引起的:
Private Sub frmMain_Resize(sender As Object, e As System.EventArgs) Handles Me.Resize
ArrangeForm()

End Sub

一旦我删除了处理程序,错误就消失了。奇怪的是,在我开发代码的其他部分约三周的时间里,它一直在运行而没有任何问题,突然就停止工作了。一个ResizeEnd事件处理程序没有问题。

我发帖只是为了提醒其他不幸遇到同样问题的人。追踪这个问题花费了我8个小时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接