Как обработать событие закрытия формы в vb.net

#vb.net #winforms

#vb.net #winforms

Вопрос:

Я использовал приведенный ниже код, но он не показывает msgbox. Что не так с этим кодом?

 Private Sub frmSimple_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
       Dim result = MsgBox("Are you sure you want to Exit ?", vbYesNo)
       If result = DialogResult.Yes Then
        me.Close()
       End If
End Sub
  

Ответ №1:

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

Вам нужно обработать FormClosing событие и установить e.Cancel значение True , если вы хотите отменить закрытие.

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

1. If result = DialogResult.No Then e.Cancel = True

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

3. Получаю сообщение об ошибке: ‘Cancel’ не является членом ‘System. Windows. Формы. FormClosedEventArgs’

4. Извините, не заметил этого. Работает как шарм: D

Ответ №2:

   Private Sub frmProgramma_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    If MessageBox.Show("Are you sur to close this application?", "Close", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
    Else
      e.Cancel = True
    End If
  End Sub
  

или именно так я использую его каждый раз снова и снова…

Ответ №3:

Используйте FormClosing событие. MSDN

Ответ №4:

  Dim result = MsgBox("Are you sure you want to Exit ?", vbYesNo)

       If result = vbYes Then
        me.Close()
       End If
  

Ответ №5:

 If MessageBox.Show("¿Exit?", "Application, MessageBoxButtons.YesNo, _
                        MessageBoxIcon.Question) = DialogResult.No Then
            e.Cancel = True
        End If
  

Ответ №6:

Я думаю, что это более чисто и просто!

 If MsgBox("Are you sure you want to Exit ?", vbYesNo) = vbNo Then e.Cancel = True
  

Ответ №7:

Этот код может быть «неэффективным», но позволяет пользователю сохранить свою работу перед закрытием, закрыть форму, если он нажмет «Нет», или вернуться обратно к форме без закрытия, если он нажмет «Отмена».

         Dim dialog As DialogResult
        dialog = MessageBox.Show("Save before closing?", "Exit", MessageBoxButtons.YesNoCancel)
        If dialog = DialogResult.Yes Then
            'Put a save file dialog here or Button.PerformClick() if you already have a save button programmed
        ElseIf dialog = DialogResult.No Then
            Application.Exit()
        ElseIf dialog = DialogResult.Cancel Then
            e.Cancel = True
        End If