私はこの作業を行うために必要なことを正確には分かりませんので、私の説明は最初は不足している可能性があります。本質的に私は負荷のたびに自分自身を再現するプログラムランチャーを書いています。タブやボタンに関するデータをSQLiteデータベースから取り出し、実行時に動的に構築します。タブ名をボタンを作成する関数に渡すと問題が発生します。データベースから適切なボタンセットを取得するために名前が必要ですが、作成時に右のタブにボタンを配置するためにその名前を使用しようとしましたが、正しくポイントしないため、デバッガはnull参照を呼び出します私がそれを指し示そうとしているタブページに(少なくともそれは私が推測しているものです)。この作業を正しく行う方法に関するアイデアはありますか?vb.netは以前に作成されたオブジェクトインスタンスとして文字列を使用します
Private Sub CreateTabs()
Dim SQLconnect As New SQLite.SQLiteConnection()
Dim SQLcommand As SQLiteCommand
SQLconnect.ConnectionString = "Data Source=" & sPath & "\dock.db;"
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
SQLcommand.CommandText = "SELECT title FROM tabs"
Dim SQLreader As SQLiteDataReader = SQLcommand.ExecuteReader()
Dim Tabs(25) As String
Dim c As Integer = 1
While SQLreader.Read()
Tabs(c) = SQLreader(0)
c = c + 1
End While
SQLcommand.Dispose()
SQLconnect.Close()
For i = 1 To UBound(Tabs)
If Tabs(i) <> "" Then
Launcher.TabPages.Add(Tabs(i))
CreateButtons(Tabs(i))
End If
Next
End Sub
Private Sub CreateButtons(ByVal tab)
Dim SQLconnect As New SQLite.SQLiteConnection()
Dim SQLcommand As SQLiteCommand
SQLconnect.ConnectionString = "Data Source=" & sPath & "\dock.db;"
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
SQLcommand.CommandText = "SELECT id,name,path FROM buttons WHERE tab = '" & tab & "'"
Dim SQLreader As SQLiteDataReader = SQLcommand.ExecuteReader()
While SQLreader.Read()
For i = 1 To 9
Dim NewButton(i) As Button
If Not SQLreader(2) Is System.DBNull.Value Then
Dim myIcon As System.Drawing.Icon = Icon.ExtractAssociatedIcon(SQLreader(2))
End If
Dim toolTip1 As ToolTip = New System.Windows.Forms.ToolTip(Me.components)
Me.Controls(tab).tabpages.add(NewButton(i)) '<--this causes my problem
'NewButton(i).Width = 32
'NewButton(i).Height = 32
'NewButton(i).Text = i
'NewButton(i).Image = myIcon.ToBitmap
'If Not SQLreader(1) Is System.DBNull.Value Then
'toolTip1.SetToolTip(NewButton(i), SQLreader(1))
'toolTip1.Active = True
'End If
Next
End While
SQLcommand.Dispose()
SQLconnect.Close()
End Sub
それはコンパイルされていない、まだその変更ではありません。私はまだデバッグモードで同じエラーを取得 "オブジェクト変数またはWithブロック変数が設定されていません。同じ行を参照してください。 – MaQleod
コンパイルされなかった場合、どのようにデバッガで何が表示されますか?実行せずにデバッグすることはできず、コンパイルせずに実行することはできません。私の変更で 'tabControl'として何を渡していますか? –
私はちょうど、デバッグを開始し、コンパイルを試み、私にエラーを提供します。 私は今すぐ2つの引数を渡しています。tabcontrolはタブコントロール名です。タブはタブページのテキストなので、正しいボタンセットを選択するためにSQL文を正しく修飾できます。私はエラーが発生します: "オブジェクト変数またはWithブロック変数が設定されていません。" tabControl.tabpages(tab).add(NewButton) – MaQleod