2014-01-24 7 views
1

Почему я получаю ошибку «Ссылка на объект, не установленную в экземпляр объекта», с моим кодом?Ссылка на объект не установлена ​​в экземпляр объекта в VB.NET

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 

имен() является глобальной переменной

Благодаря

Обновлено:

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 
+0

В какой строке вы видите ошибку? Что такое имена? Это массив? Где код для имен? – DevelopmentIsMyPassion

+0

Что такое имена? Это массив? – DevelopmentIsMyPassion

+0

Ошибка указывает на: Имена (i) = txtPatientName.Text, Names - это массив и объявляется как глобальная переменная во всех формах в модуле – Marcel

ответ

1

Если вы настаиваете на использовании модуля, вы должны Redim сохранить свой массив.

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 
+0

thankyou код для кнопки 2 работал для меня, однако 'i' будет только увеличиваться один раз при первом щелчке и после ввода другого имени, он не увеличивается – Marcel

+0

хорошо я имеет размер в форме1. добавьте I в свой модуль. 'Public i As Integer = 0' –

+0

честно из той же формы (form1), он должен был работать так же, но чтобы сделать его совместимым по всем формам, которые вам понадобятся. –

0

Вам нужно сделать модуль общедоступными. Поэтому я предлагаю ниже

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 
+0

Я все еще получаю ошибку «Module1» является типом и не может использоваться как выражение « – Marcel

+0

Это был правильный курс действий, но массив должен был быть« redim preserve »в событии, когда запись добавлена. –

Смежные вопросы