通常、長い処理を行うプログラムの場合、処理を行っている間にマウスカーソルを待機状態にして、現在処理中であることをユーザに示します。 これを行うにはフォームの Cursor プロパティを Cursors.WaitCursor に設定します。
また、元に戻す時は Cursor プロパティを Cursors.Default に設定します。
フォームのマウスカーソルを待機状態する方法
Public Class frmCursor Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'フォームのカーソルを待機状態にする Me.Cursor = Cursors.WaitCursor '10秒待つ(長い処理の代わりにSleep関数を用いる) System.Threading.Thread.Sleep(10000) 'フォームのカーソルを元に戻す Me.Cursor = Cursors.Default End Sub End Class
上のプログラムで「長い処理の代わり」と書きましたが、実際にはデータベース処理など時間の掛かる処理を書くわけですが、 その中でエラーの対応の為に Try ... Catch ... End でエラー処理を記述すると思います。
このエラー処理の中で適切にカーソルを元に戻してやらないと、カーソルが待機状態のままになってしまいます。
(これは明らかなバグで、フォーム上の処理はできるが、カーソルが矢印に戻ってないので変な感じになります)
これを回避するためにも、カーソル設定処理は Try ... Catch ... End の外側で行うか、 もしくは以下のソースの様に Try の Finnaly の中で行うと良いと思います。
カーソル処理を Finally ブロックで行う方法
Public Class frmCursor Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try 'フォームのカーソルを待機状態にする Me.Cursor = Cursors.WaitCursor '10秒待つ(ここでは通常の処理においてエラーが発生するかもしれない) System.Threading.Thread.Sleep(10000) Catch ex As Exception 'ここに例外処理を記述する Finally 'フォームのカーソルを元に戻す Me.Cursor = Cursors.Default End Try End Sub End Class
関連する記事
⇒フォームクラス生成時に設定値を同時に渡す方法⇒フォーム上の複数のコントロール(TextBox)の入力変化を確認する方法について
⇒フォームのマウスカーソルを待機状態する方法について
⇒フォームクラスの継承の方法について
PR
コメント