時間のかかる処理の間、フォーム上(あるいはコントロール上)のマウスポインタを一時的に待機状態(通常は砂時計のアイコン)にする方法を紹介します。
次のコードのように、Cursor.CurrentプロパティをCursors.WaitCursorに変更することにより、すべてのフォーム及びコントロール上のカーソルを待機状態に出来ます。元に戻すには、Cursors.Defaultとします。ただしマウスイベントの待機が再開されることによってカーソルが解除されますので、Cursors.Defaultで元に戻さなくても、大抵の場合は問題なく元に戻ります。
'待機状態 Cursor.Current = Cursors.WaitCursor '5秒間停止する System.Threading.Thread.Sleep(5000) '元に戻す Cursor.Current = Cursors.Default
//待機状態 Cursor.Current = Cursors.WaitCursor; //5秒間停止する System.Threading.Thread.Sleep(5000); //元に戻す Cursor.Current = Cursors.Default;
特定のフォーム上(あるいはコントロール上)のマウスポインタを待機状態にする(砂時計のアイコンにする)には、Control.CursorプロパティをCursors.WaitCursorに変更します。この場合はCursor.Currentプロパティと違い、マウスイベントの待機が再開されることによって解除されるということはありません。
'待機状態 Me.Cursor = Cursors.WaitCursor '5秒間停止する System.Threading.Thread.Sleep(5000) '元に戻す Me.Cursor = Cursors.Default
//待機状態 this.Cursor = Cursors.WaitCursor; //5秒間停止する System.Threading.Thread.Sleep(5000); //元に戻す this.Cursor = Cursors.Default;
.NET Framework 2.0からは、Control.UseWaitCursorや、Application.UseWaitCursorプロパティをtrueにすることにより、カーソルを待機状態にできます。待機状態を解除するには、UseWaitCursorをfalseにします。
Control.UseWaitCursorでは、そのコントロール(フォームを含む)と、コントロールに配置されたすべての子コントロール上で、カーソルが待機状態になります。
Application.UseWaitCursorでは、アプリケーションのすべてのフォームやコントロール上で、カーソルが待機状態になります。
しかしこれらのプロパティの使用には、注意が必要です。マウスを移動させたというメッセージをフォームが受信しなければ、これらのプロパティでカーソルが変更されることはないようです。よって現時点ではこのプロパティを使用するケースはごく限られます。先に紹介したControl.Cursorプロパティを変更する方法を使用したほうが確実です。
'カーソルの待機状態をトグルで変更する Application.UseWaitCursor = Not Application.UseWaitCursor
//カーソルの待機状態をトグルで変更する
Application.UseWaitCursor = !Application.UseWaitCursor;
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。