выполните некоторые действия перед отображением окна сообщения, winforms

#vb.net #winforms

#vb.net #winforms

Вопрос:

Я всегда использую
Me.Cursor = Cursors.WaitCursor
какое-то время требуются такие функции, как обращение к базе данных.

Теперь, если возникнет какое-либо исключение, я выведу сообщение об ошибке как:
Msgbox(ex.Message)

Итак, перед отображением любого сообщения мне нужно сбросить курсор на значение по умолчанию. Есть ли простой способ сделать это в одном месте вместо того, чтобы записывать это во все блоки catch.

Есть ли способ наследовать класс MessageBox и переопределить функции?

В противном случае мне нужно закодировать его во всех блоках catch или обработать все исключения в одном месте, которое я не хочу сейчас изменять во всем приложении.

Заранее всем спасибо.

Ответ №1:

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

 Try
'Do some code here
catch ex as Exception
ShowException(ex)
End Try


Private Sub ShowException(ex as Exception)
MessageBox.Show("An exception occured."   vbCrLf   ex.ToString())
Me.Cursor = Cursors.Default
End Sub
  

Ответ №2:

почему вы хотите изменить курсор? Я никогда не одобрял это (за исключением VBA :))

почему бы не использовать BackgroundWorker для выполнения этой работы, чтобы ваш графический интерфейс оставался отзывчивым. и, может быть, вы могли бы немного добавить progressbase в строку состояния или диалоговую форму, чтобы показать ход выполнения задачи?

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

1. только что заметил, что там написано MsgBox(), так что это VBA :). возможно, вы захотите изменить свой «тег» с «winforms» на excel или vba

2. MsgBox идеально подходит для VB. Net и Winforms