У меня есть приложение для нескольких форм, я близок к завершению, но у меня ОГРОМНАЯ проблема.
Мне нужно держать основную форму открытой, в основном коммуникационную задачу, которая открывает другие формы, которые отображают общее состояние и запрашивает различные пользовательские данные. Проблема заключается в том, что когда любая форма запрашивается либо автоматически по состоянию из механизма связи, либо через нажатие кнопки пользователя. При первом запросе формы проблем не возникает, однако при втором запросе любой данной формы она отображается на панели задач Windows, но не открывается на экране. Все переключения форм в этом приложении обрабатываются одной и той же процедурой.
ПРИМЕЧАНИЕ. Форма с именем «WEDGE_MENU_SCREEN» - это форма, которая остается открытой и активной, только одна другая форма должна быть активной в любое время.
Вот код.
Public Function GoToForm(Requested_form As Form) As Boolean
'in a multi form app, we only want ONE form active on screen at any given time.
'all screen change requests should come from the same operating thread
Dim Not_found_form As Boolean = True
' Dim frm As Form
Dim formNames As New List(Of String)
Dim xformNames As New List(Of String)
'get a list of active forms running under this main thread LESS the static one
For Each currentForm As Form In Application.OpenForms
If currentForm.Name <> "WEDGE_MENU_SCREEN" Then
formNames.Add(currentForm.Name)
End If
Next
'from that list create another less the requested in the case that the requested form is already up
For Each currentFormName As String In formNames
If currentFormName <> Requested_form.Name Then
xformNames.Add(currentFormName)
End If
Next
'if the second list is not empty
If xformNames.Count > 0 Then
'hide all active forms in the second list
For Each currentFormName As String In xformNames
Application.OpenForms(currentFormName).Visible = False
Application.OpenForms(currentFormName).Opacity() = 0
Next
End If
'then activate the requested form
Requested_form.Visible = True
Requested_form.Opacity = 1
Return True
End Function
ДОПОЛНИТЕЛЬНОЕ ПРИМЕЧАНИЕ: я также попробовал следующее
Application.OpenForms (currentFormName) .hide ()
с Requested_form.Show ()
ТАКЖЕ
Application.OpenForms (currentFormName) .close ()
с Requested_form.Show ()
Любая помощь будет принята с благодарностью.
-Джим