В моем mdiMain у меня есть этот код.Как вы обходите событие FormClosing в vb.net?
Private Sub mdiMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
e.Cancel = IIf(MsgBox("Closing this window will log you out. Are you sure?", MsgBoxStyle.YesNo, "Log out?") = MsgBoxResult.Yes, False, True)
End Sub
Моей причиной для этого является уловить все триггеры закрытия формы. Либо если пользователь нажимает кнопку выхода из системы, либо они нажимают кнопку x в верхнем правом углу окна или даже если они нажимают Alt-F4. В соответствии с FormClosed
того же MDI существует набор инструкций после того, как было подтверждено, что он вышел из системы. Моя проблема в том, что у меня также есть процесс, когда пользователь принудительно выходил из программы. Поскольку пользователь «принудительно» выходит из системы, диалог подтверждения должен быть обойден. Но я не уверен, как обойти событие FormClosing
и пропустить непосредственно до FormClosed
.
До сих пор я только придумал один способ, чтобы установить булевский триггер. Что-то наподобие
Private Sub mdiMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
If ForceLogOut = True Then Exit Sub
e.Cancel = IIf(MsgBox("Closing this window will log you out. Are you sure?", MsgBoxStyle.YesNo, "Log out?") = MsgBoxResult.Yes, False, True)
End Sub
Но, ради знания, мне все равно хотелось бы услышать от других людей о других путях для этого.
good ........... –
Спасибо за ответ. Я проверю это, как только я вернусь домой. «CloseReason» действительно интересен. Интересно, могу ли я использовать объекты формы, такие как кнопки? Например. 'CloseReason.btnClose' У меня есть эта зависимость от одной строки, например,' IIf' Но почему это небезопасно? – YinYangKim
Нет, вы не можете, близкая причина - перечислить. Вычисление каждого значения происходит здесь: http://msdn.microsoft.com/en-us/library/system.windows.forms.closereason(v=vs.110).aspx –