Лучший способ убить форму после того, как событие FormClosing переопределено, чтобы скрыть, а не закрыть? - PullRequest
2 голосов
/ 12 апреля 2010

У меня есть простая форма Windows, которая содержит элементы управления свойствами во время выполнения. Когда пользователь нажимает кнопку Закрыть [X], я хочу сохранить окно и его содержимое живым, а не убивать его, обрабатывая событие FormClosing, отменяя событие и просто скрывая форму.

Хорошо, но при закрытии приложения мне нужно закрыть окно. Я реализовал ниже, но это чувствуется клуджи. Есть ли более простой и умный способ справиться с этой ситуацией? (Контроллер формы вызывает KillForm явно после получения события закрытия из главного окна.)

Friend Class HostForm
    Private _hideInsteadOfClosing As Boolean = True

    Private Sub HostForm_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) _
    Handles Me.FormClosing
        If _hideInsteadOfClosing Then
            Me.Hide()
            e.Cancel = True
        End If
    End Sub

    Public Sub KillForm()
        _hideInsteadOfClosing = False
        Me.Close()
    End Sub
End Class

1 Ответ

3 голосов
/ 12 апреля 2010

Вы можете проверить значение свойства CloseReason объекта args события. Если это UserClosing, скройте форму, в противном случае закройте ее. Для всех возможных значений этого свойства, проверьте документацию перечисления CloseReason .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...