У меня есть приложение, которое открывает две формы в первичных и вторичных мониторах. Обе формы имеют одинаковый код, и у меня есть их настройка, поэтому, когда я нажимаю клавишу Escape, обе формы должны закрываться, но одна из форм не закрывается.Закрывающая форма во вторичном экране
Код: Form1
Public class Form1
Dim obj As New Form2
Dim obj2 As New Form3
Public Closecheck As Boolean = False
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.Hide()
Obj2.Location = Screen.AllScreens(UBound(Screen.AllScreens)).Bounds.Location
Obj.Show()
Obj2.Show()
End Sub
Form2
Public Class Form2
Prive Sub Form2_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Escape Then
Form1.Closecheck = True
Form3.Closeout3()
Me.Close()
Form1.show
End if
Public Sub Closeout2()
If Form1.Closecheck = True Then
MsgBox(Form1.Closecheck)
Me.Close()
End If
End Sub
Форма Form3
Public Class Form3
Private Sub Form3_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Escape Then
Form1.Closecheck = True
Form2.Closeout2()
Me.Close()
Form1.show
End Sub
Public Sub Closeout3()
If Form1.Closecheck = True Then
MsgBox(Form1.Closecheck)
Me.Close()
End If
End Sub
MsgBox
на Form2 и Форма Form3 только там, дайте мне знать, что они находят Booloean Closecheck
Но когда второй MsgBox
открывается в i ts экран весь экран заморожен, и я не могу закрыть MsgBox
. Скорее всего, тот факт, что форма все еще открыта.
Вы используете экземпляр по умолчанию ваших форм, когда вы делаете Form1.CloseCheck и тому подобное. Ваши формы называются obj и obj2. Form2 и Form3 не видны. Вам нужно установить родительский элемент в Form1 при их создании. –
Также опечатка в строке 2: вы хотите, чтобы 'Form2' не' From2' – Josh
Использование MsgBox для отладки не является идеальным. Окно сообщения может помешать работе вашего кода. Лучше использовать Debug.WriteLine и т. Д. – LarsTech