Приложение Windows Form. Стартовая форма: fMain. На ней в числе контролов имеется кнопка уничтожения формы: btnQuit. Кнопка оснащена парой разных картинок, которые отрабатываются событиями MouseHover и MouseLeave. По событию btnQuit.Click форма уничтожается:
- Код: Выделить всё
Private Sub btnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnQuit.Click
Me.Dispose()
End Sub
Но! Во время работы Me.Dispose() успевает сработать событие btnQuit.MouseLeave и вызвать исключение в связи с отсутствием на форме контрола imglstCommandKey:
- Код: Выделить всё
Private Sub btnQuit_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnQuit.MouseLeave
Me.btnQuit.Image = Me.imglstCommandKey.Images(0)
End Sub
Выход из ситуации прост:
- Код: Выделить всё
Private Sub btnQuit_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnQuit.MouseLeave
Try
Me.btnQuit.Image = Me.imglstCommandKey.Images(0)
Catch ex As Exception
End Try
End Sub
или
- Код: Выделить всё
Private Sub btnQuit_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnQuit.MouseLeave
If Not Me.Disposing Then
Me.btnQuit.Image = Me.imglstCommandKey.Images(0)
End If
End Sub
но как-то мне это не нравится совершенно
Как можно иначе оформить код, чтобы было "в духе .NET"