对象引用未设置为VB.NET中对象的实例

对象引用未设置为VB.NET中对象的实例,vb.net,instance,Vb.net,Instance,为什么我的代码会出现“对象引用未设置为对象实例”的错误 Public Class Form2 Dim i As Integer = 0 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMainMenu.Click Me.Close() End Sub Private Sub btnEnterPatient_Cli

为什么我的代码会出现“对象引用未设置为对象实例”的错误

Public Class Form2
  Dim i As Integer = 0

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMainMenu.Click
        Me.Close()
    End Sub

  Private Sub btnEnterPatient_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnterPatient.Click

        Names(i) = txtPatientName.Text
        i = i + 1
  End Sub
End Class
Names()是一个全局变量

谢谢

更新:

Module Module1
    Public Names() As String
    Public Heights() As Integer
    Public Weights() As Integer
End Module


Public Class Form2

    Dim i As Integer = 0

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMainMenu.Click
        Me.Close()
    End Sub

    Private Sub btnEnterPatient_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnterPatient.Click


        ReDim Preserve Names(0 To i)
        Names(i) = txtPatientName.Text

        ReDim Preserve Heights(0 To i)
        Heights(i) = txtPatientHeight.Text

        ReDim Preserve Weights(0 To i)
        Weights(i) = txtPatientWeight.Text

        i = i + 1

    End Sub
End Class

您需要将模块公开。所以我建议如下

Public Module Module1
   Public Names() As String
   Public Heights() As Integer
   Public Weights() As Integer
End Module
然后以如下形式访问它

Dim mod1 = Module1
mod1.Names(i) = txtPatientName.Text

如果您坚持使用模块,则应重新定义并保留阵列

Public Module Module1
    Public i As Integer = 0
    Public Names() As String
    Public Heights() As Integer
    Public Weights() As Integer
End Module

Public Class Form1
    Dim i As Integer = 0

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Close()
    End Sub

    Private Sub btnEnterPatient_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click


        ReDim Preserve Names(0 To i)
        Names(i) = txtpatientName.Text

        ReDim Preserve Heights(0 To i)
        Heights(i) = txtpatientheight.Text

        ReDim Preserve Weights(0 To i)
        Weights(i) = txtpatientweight.Text

        i = i + 1

    End Sub


    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        For Each j In Names
            MsgBox(j.ToString)
        Next

    End Sub
End Class

哪一行出错?什么是名字?是阵列吗?名字的代号在哪里?什么是名字?是数组吗?错误指向:Names(i)=txtPatientName.Text,Names是一个数组,它被声明为模块中所有表单的全局变量。我确定您无法访问此变量,因此会出错吗?你能说明名称是如何宣布的吗?你需要将模块声明为公共模块模块1我仍然收到错误“'Module1'是一种类型,不能用作表达式”这是正确的操作过程,但在添加记录时,该数组需要在事件上“redim preserve”。谢谢按钮2的代码为我工作,然而,“i”在第一次单击时只会增加一次,在输入另一个名称后,它不会增加。因为我在表格1中标注了尺寸。将I添加到您的模块中Public i As Integer=0`从同一表单(form1)中诚实地说,它的工作原理应该是相同的,但要使它在表单之间兼容,您仍然需要这样做。我将它添加到了我的模块中,但是在它达到1之后,它仍然不会增加。在您增加i之后,将MsgBox(i.ToString)添加到按钮2。它应该是一个增量。在我的资料中确实如此。