-1

このコードをコンパイルしようとしているときにこの問題が発生しました

Public Class Form2
Dim db_classobj As Object
Dim textboxobj() As TextBox = {TextBox1, TextBox2}
Dim datagridobj() As DataGridView = {DataGridView1}

Dim temp As New db_class(textboxobj, datagridobj, "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=datamhs.accdb", "mhs", "ksmhs")


Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   db_classobj = temp
End Sub


End Class

コンパイル中に、次
のエラー メッセージが表示されました。フォームの作成中にエラーが発生しました。詳細については、Exception.InnerException を参照してください。エラー: オブジェクト参照がオブジェクトのインスタンスに設定されていません。


私のコードの何が問題なのですか? 誰かがそれを修正できますか?ほんとうにありがとう。ありがとう。

4

3 に答える 3

1

フォーム ロード関数をこれに変更し、クラスの先頭からtextboxobjdatagridobj、およびtemp宣言を削除します。

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

     Dim textboxobj() As TextBox = {TextBox1, TextBox2}
     Dim datagridobj() As DataGridView = {DataGridView1}
     Dim temp As New db_class(textboxobj, datagridobj, "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=datamhs.accdb", "mhs", "ksmhs")
     db_classobj = temp
End Sub

基本的に何が起こっていたかというと、Dim temp as Newステートメントがクラス内で正しく、フォーム コンストラクターの前に実行されていたため、コンストラクターはすべてのコントロール (TextBox1 など) に値が割り当てられる場所であるため、基本的にNothing値の配列を渡していました。あなたのdb_classコンストラクタに。この行を押す_textbox(i).DataBindings.Add("text", ds.Tables(_mailboxname), temp(i))と、_textbox(i)パーツが返さNothingれるため、プロパティへの参照の試行はDataBindings失敗します。プロパティが存在しないためです。

于 2012-12-06T19:01:09.327 に答える
1

コンストラクターに渡すパラメーターdb_classは正しい型ですが、正しい値ではありません。のコンストラクターがdb_classこの例外をスローするようにしています。

コンストラクターのどの行がdb_class例外をスローしているかを知らなければ、私たちはあなたを助けることができません.

この線ですか?

_textbox(i).DataBindings.Add("text", ds.Tables(_mailboxname), temp(i))
于 2012-12-06T16:23:59.510 に答える
0

最初にアレイを作成する必要があります。

Dim textboxobj() As TextBox = New TextBox(){TextBox1, TextBox2}
Dim datagridobj() As DataGridView = New DataGridView(){DataGridView1}
于 2012-12-06T16:09:15.100 に答える