DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

DOBON.NET

フォーム(またはコントロール)のマウスポインタ(カーソル)を待機状態にする

Cursor.Currentプロパティによる方法

時間のかかる処理の間、フォーム上(あるいはコントロール上)のマウスポインタを一時的に待機状態(通常は砂時計のアイコン)にする方法を紹介します。

次のコードのように、Cursor.CurrentプロパティをCursors.WaitCursorに変更することにより、すべてのフォーム及びコントロール上のカーソルを待機状態に出来ます。元に戻すには、Cursors.Defaultとします。ただしマウスイベントの待機が再開されることによってカーソルが解除されますので、Cursors.Defaultで元に戻さなくても、大抵の場合は問題なく元に戻ります。

[VB.NET]
'待機状態
Cursor.Current = Cursors.WaitCursor
'5秒間停止する
System.Threading.Thread.Sleep(5000)
'元に戻す
Cursor.Current = Cursors.Default
[C#]
//待機状態
Cursor.Current = Cursors.WaitCursor;
//5秒間停止する
System.Threading.Thread.Sleep(5000);
//元に戻す
Cursor.Current = Cursors.Default;

Control.Cursorプロパティによる方法

特定のフォーム上(あるいはコントロール上)のマウスポインタを待機状態にする(砂時計のアイコンにする)には、Control.CursorプロパティをCursors.WaitCursorに変更します。この場合はCursor.Currentプロパティと違い、マウスイベントの待機が再開されることによって解除されるということはありません。

[VB.NET]
'待機状態
Me.Cursor = Cursors.WaitCursor
'5秒間停止する
System.Threading.Thread.Sleep(5000)
'元に戻す
Me.Cursor = Cursors.Default
[C#]
//待機状態
this.Cursor = Cursors.WaitCursor;
//5秒間停止する
System.Threading.Thread.Sleep(5000);
//元に戻す
this.Cursor = Cursors.Default;

UseWaitCursorメソッドによる方法

.NET Framework 2.0からは、Control.UseWaitCursorや、Application.UseWaitCursorプロパティをtrueにすることにより、カーソルを待機状態にできます。待機状態を解除するには、UseWaitCursorをfalseにします。

Control.UseWaitCursorでは、そのコントロール(フォームを含む)と、コントロールに配置されたすべての子コントロール上で、カーソルが待機状態になります。

Application.UseWaitCursorでは、アプリケーションのすべてのフォーム、コントロール上で、カーソルが待機状態になります。

しかしこれらのプロパティの使用には、注意が必要です。マウスを移動させたというメッセージをフォームが受信しなければ、これらのプロパティでカーソルが変更されることはないようです。よって現時点ではこのプロパティを使用するケースはごく限られます。先に紹介したControl.Cursorプロパティを変更する方法を使用したほうが確実です。

[VB.NET]
'カーソルの待機状態をトグルで変更する
Application.UseWaitCursor = Not Application.UseWaitCursor
[C#]
//カーソルの待機状態をトグルで変更する
Application.UseWaitCursor = !Application.UseWaitCursor;
  • 履歴:
  • 2007/1/15 「UseWaitCursorメソッドによる方法」を追加。