Private Sub FormStatusUpdate(Serverconnectionstatus as boolean)
If ServerConnectionStatus = True Then
Try
' Enable Download/Upload/Sync Icon in Form
For Each OpenedForms As Form In My.Application.OpenForms
If Not TypeOf OpenedForms Is SplashScreen1 And Not TypeOf OpenedForms Is GroupOper Then
If OpenedForms.Text.EndsWith(")") Or OpenedForms.Text.EndsWith("*") Then
For Each ts_obj As ToolStrip In OpenedForms.Controls.OfType(Of ToolStrip)()
Dim btn_Updates1 = ts_obj.Items.Find("Download", True)
If btn_Updates1.Length > 0 Then
DirectCast(btn_Updates1(0), ToolStripItem).Enabled = True
End If
Dim btn_Updates2 = ts_obj.Items.Find("tsSync", True)
If btn_Updates2.Length > 0 Then
DirectCast(btn_Updates2(0), ToolStripItem).Enabled = True
End If
Dim btn_Updates3 = ts_obj.Items.Find("Upload", True)
If btn_Updates3.Length > 0 Then
DirectCast(btn_Updates3(0), ToolStripItem).Enabled = True
End If
Next
End If
ElseIf TypeOf OpenedForms Is GroupOper Then
For Each gd_obj As Control In OpenedForms.Controls
If gd_obj.Name = "GoDownload" Or gd_obj.Name = "GoUpload" Then
gd_obj.Enabled = True
End If
Next
End If
Next....
Вопрос: как вызвать элемент управления пользовательского интерфейса, расположенный в подзаголовке?как использовать различные элементы управления пользовательского интерфейса?
Моя основная форма открыла различные подформы во время инициализации. Основная форма называется com-объектом. Объект com ответил в другом потоке. Теперь мне нужно заметить некоторые элементы управления через события com_объекта com_change (Ini_DataGroup_DataChanged). Я знаю, как информировать основной пользовательский интерфейс формы, но не в состоянии определить эти элементы управления в подзаголовке. другими словами, я не уверен, как вызвать эти элементы подформы во время вызова.
здесь COM-объект вызывает функцию.
Private Sub Ini_DataGroup_DataChanged(subscriptionHandle As Object, requestHandle As Object, values() As Opc.Da.ItemValueResult) Handles Ini_DataGroup.DataChanged
MsgBox("ERROR")
If values(0).Quality.Equals(Opc.Da.Quality.Good) And values(0).Value.ToString = "1" Then
OPCConnectionBool = True
Else
Try
OPCConnectionBool = False
subscriptionHandle = Nothing
OPCNetServer.Disconnect()
OPCNetServer = Nothing
OfflineNotification.StartPosition = FormStartPosition.CenterScreen
OfflineNotification.ShowDialog()
Catch ex As Exception
Exit Sub
End Try
End If
Call FormStatusUpdate(OPCConnectionBool) ' Update Connection Status
End Sub
Очевидно, что бросает исключение говорит: Cross Threads и Controls ошибки и т.д. , потому что COM был создан в другом потоке. Командная строка ts_obj не может управляться вызовом com.
Как я могу решить эту проблему? Благодаря
я уверен, что есть несколько способов это может быть достигнуто в зависимости от как структурирован ваш код. Измените свой вопрос и укажите более подробный код, показывающий, как вы вызываете свои подформы, чтобы мы могли предоставить ответ. –
Вы получаете какие-то исключения? ... или просто не находите целевой контроль? –