У меня есть приложение, которое я разработал в VB 2010. Оно состоит из ряда форм Windows и процесса прослушивания, который прослушивает ввод с MIDI-устройства (клавиатуры и т. д.). Этот процесс слушателя выполняется в отдельном потоке.
Используя функцию обратного вызова и метод вызова, я могу обновить значение текстового поля в одной из форм значением нот, воспроизводимых на MIDI-устройстве (код ниже).
Чего я не могу сделать, так это вызвать нажатие кнопки на одной из кнопок, чтобы часть кода выполнялась в той же форме, используя другую функцию обратного вызова и вызов.
Я погуглил и не могу найти никаких рабочих примеров, поэтому я не уверен, что это возможно - я надеюсь, что это потому, что это последний 1% моего проекта!
Вот что работает для обновления текстового поля в форме, что мне нужно изменить, чтобы нажать кнопку в той же форме с именем btn_NextSection ?
' Because the MIDI listener process runs in a different thread
' it can read the states of controls on the parent form but it
' cannot modify them so we need to identify the parent process
' and update the text box as that one instead
' Set up the callback
Private Delegate Sub SetNextSectionTextCallback(ByVal [text] As String)
' Updates NextSection
Private Sub SetNextSectionText(ByVal [text] As String)
' Function to see if the thread that tries to update the
' text box is the same as the one that started it. If it
' isn't then locate parent process and update as that one
If callerInstance.txt_NextSection.InvokeRequired Then
Dim d As New SetNextSectionTextCallback(AddressOf SetNextSectionText)
callerInstance.Invoke(d, New Object() {[text]})
Else
callerInstance.txt_NextSection.Text = [text]
End If
End Sub
Заранее спасибо !