VB.net форма снова открывается сама по себе

#vb.net #forms #visual-studio-2008

#vb.net #формы #visual-studio-2008

Вопрос:

у меня есть форма входа, которая отправляет вас, если логин правильный, в главное меню … в главном меню есть кнопки, ведущие к другим формам. при нажатии кнопки скрывается главное меню и отображается другая форма. но проблема в том, что когда главное меню скрывается и появляется другое, главное меню снова открывается само по себе, и каждый раз, когда вы его закрываете, оно открывается снова. это сводит меня с ума. вот код :-

 Public Class mainmenu

    Private Sub Button1_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles Button1.Click
        Me.Hide()
        Maintenance.Show()
    End Sub

    Private Sub mainmenu_Load(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles MyBase.Load
        If Login.c1 <> 0 Then
            Me.memberbtn.Visible = True
        Else
            Me.memberbtn.Visible = False
        End If
    End Sub

    Private Sub memberbtn_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles memberbtn.Click
        Me.Hide()
        Member.Show()
    End Sub
End Class
  

проверьте события нажатия. программа не выдает мне никаких ошибок. пожалуйста, помогите.

Комментарии:

1. Есть ли у участника или формы сопровождения какой-либо код, который открывает форму главного меню?

2. да, у каждой формы есть кнопка «Назад», при нажатии на которую скрывается текущая форма и снова отображается главное меню. то же, что и выше.

3. Откуда вы знаете, что «каждый раз, когда вы закрываете ее, она открывается снова», потому что, если это из-за кода, он будет отображаться сразу после скрытия, человек не сможет его увидеть. Я имею в виду, есть ли у вас какой-либо код в двух других формах, который связан с вашей формой главного меню?

4. кнопка просто скрывает главное меню, а затем показывает форму обслуживания или участника. я даже удалил кнопку «Назад» в каждой форме, и она по-прежнему появляется из ниоткуда. нет, между ними нет связи с формой главного меню. и что касается ее закрытия, я говорю о закрытии ее из окна управления.

Ответ №1:

Вы разместили неправильный код. Вы, должно быть, что-то сделали, чтобы меню снова стало видимым, когда пользователь закрывает форму. Это код, который вызывает проблему.

Давайте создадим другую ее версию, в которой нет этой проблемы. Вам нужно прослушать событие FormClosed, чтобы узнать, что меню должно снова стать видимым. Напишите небольшой вспомогательный метод, который гарантирует это:

 Private Sub DisplayForm(ByVal frm As Form)
    AddHandler frm.FormClosed, AddressOf DisplayMenu
    frm.Show()
    Me.Hide()
End Sub

Private Sub DisplayMenu(ByVal sender As Object, ByVal e As EventArgs)
    Me.Show()
End Sub
  

Обработчик события нажатия кнопки теперь прост:

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    DisplayForm(New Maintenance())
End Sub
  

Вы можете дополнительно улучшить метод DisplayForm. Весьма вероятно, что вы захотите установить для свойства StartPosition формы значение manual и установить его свойство Location таким образом, чтобы формы отображались в определенном месте на экране.