Не уверен, что именно мне нужно сделать, чтобы сделать эту работу, поэтому мне может быть недостает сначала. По сути, я пишу программу запуска, которая каждый раз воссоздает себя при загрузке. Он извлекает данные о вкладках и кнопках из базы данных SQLite и динамически строит себя во время выполнения. Я получаю свою проблему, когда передаю имя вкладки через функцию, которая создает кнопки. Мне нужно имя, чтобы вытащить правильный набор кнопок из базы данных, и затем я попытался использовать это имя, чтобы поместить кнопки на правой вкладке, когда я их создаю, но отладчик называет это пустой ссылкой, потому что он не указывает правильно на вкладке, на которую я пытаюсь это указать (по крайней мере, это то, что я предполагаю). Любые идеи о том, как правильно это сделать?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
он не скомпилировал и до сих пор не изменился. Я все еще получаю ту же ошибку в режиме отладки «Объектная переменная или с заблокированной переменной блока». в отношении той же линии. – MaQleod
Если это не скомпилировано, то как вы могли видеть что-нибудь в отладчике? Вы не можете отлаживать, не запуская его, и вы не можете запустить его, не компилируя его. Что вы проходите как 'tabControl' с моими изменениями? –
Я просто ударил отладку, и он пытается скомпилировать и предоставляет мне ошибку. Теперь я передаю два аргумента, tabcontrol - это имя элемента управления вкладкой, а вкладка - это текст вкладки, чтобы я мог правильно квалифицировать инструкцию SQL, чтобы выбрать нужный набор кнопок. Я получаю сообщение об ошибке: «Object variable или With block variable not set». в строке, которая пытается добавить новую кнопку на вкладку, tabControl.tabpages (вкладка) .add (NewButton) – MaQleod