VB.NET: прервать FormClosing()

у меня есть фрагмент кода, который я хочу запустить, когда приложение закрывается. Итак, я использовал FormCLosing событие. Но теперь я хочу оставить сообщение для подтверждения выхода. Например, если пользователь нажимает "выход" (X), появится подсказка, если он нажмет нет, то приложение не закроется и не вернется в предыдущее состояние.

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

Я имею в виду, я нужно еще как ExitButtonPressed()..

2 ответов


вы можете попробовать что-то вроде

Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
    If (MessageBox.Show("Close?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.No) Then
        e.Cancel = True
    End If
End Sub

посмотреть

FormClosingEventArgs Класс

и

CancelEventArgs.Отменить Свойство

событие можно отменить, установив свойство Cancel имеет значение true.


' Button2 и closebutton формы закрывают форму, задавая один и тот же вопрос

Dim button2Yes как Boolean = False Частный суб Button2_Click (отправитель как объект, e Как EventArgs) обрабатывает Button2.Нажмите

    If MessageBox.Show("    Sure to close?   ", "CLOSING CONTROL", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
        button2Yes = True
        Me.Close()
    Else
        button2Yes = False
    End If
End Sub

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles Me.FormClosing
    If Not button2Yes Then
        If Not MessageBox.Show("    Sure to close?   ", "CLOSING CONTROL", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
            e.Cancel = True
        End If
    End If
End Sub