0

次の vb.net コードの何が問題なのだろうか。

Public Class Form10

Public IDs() As String = TextBox1.Text.Split(",")

Private Sub Form10_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    For Each id In IDs
        MsgBox(id)
    Next
End Sub

クラス終了

私がする時

Form10.show()

「オブジェクト参照がインスタンスに設定されていません」というエラーが表示されます

4

2 に答える 2

1

クラス内のフィールドを、対応するフォーム上のまだ存在しないコントロールからの値で初期化するように宣言しました。フィールドメンバーの初期化子にアクセスするまでにコントロールが初期化およびロードされないため、エラーが発生します。

パブリック ID 宣言を保持するには、次のように、フィールド宣言から初期化を削除してから、代入を Button1_Click イベントに移動します。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    IDs=TextBox1.Text.Split(",")
    ' Do something interesting with IDs now...
End Sub
于 2012-08-09T04:19:45.550 に答える
0
Public Class Form10
Private Sub Form10_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim IDs() As String = TextBox1.Text.Split(",")
    Form1.somefunction(IDs)
End Sub

そしてForm1で

  Public Sub somefunction(ByVal IDs() As String)
    For Each id In IDs
        MsgBox(id)
    Next
End Sub
于 2012-08-09T04:18:33.257 に答える