.NET TIPS

待機状態のマウス・カーソルを表示するには?

デジタルアドバンテージ
2004/03/12

 Windowsアプリケーションで時間のかかる処理を行う場合、その処理実行中にユーザー・インターフェイスに何も表示されていないと、それが本当に実行中なのか、もしくはアプリケーションがハングアップ(フリーズ)してしまったのか、区別が付かないことが多い。

 このような場合、進行状況(処理の何%が完了したか)を表すメーター(ProgressBarコントロール)を使った「進行状況ダイアログ」を表示するというのが1つの対処方法である。しかし5秒程度の短い処理だと、ダイアログのメーターがあっという間に100%に達して、すぐにダイアログが閉じられてしまうため、ユーザーにとって使い勝手はよくない。

 このような時間がかかるものの、大して長くない処理、約10秒以内の微妙な長さの処理では、マウス・カーソルを待機(Wait)状態にして処理中を表現する方法がお勧めだ(以降、「待機状態のマウス・カーソル」は「待機カーソル」と記述する)。ここでは、その方法について解説する。

 以下の画面では、通常状態のマウス・カーソルが表示されている。

通常のマウス・カーソルの表示
何もしていない状態では、通常のマウス・カーソルが表示されている。

 このマウス・カーソルの表示を、待機カーソルに変更したのが次の画面だ。なお、下の画面のアプリケーションでは、[Waitカーソル表示]ボタンをクリックすると、5秒間だけマウス・カーソルが待機カーソルに変更される。5秒たつと再び通常のマウス・カーソル表示に戻るようになっている。

待機状態のマウス・カーソルの表示
[Waitカーソル表示]ボタンをクリックすると、5秒間だけマウス・カーソルが待機カーソルに変更される。5秒たつと再び通常のマウス・カーソル表示に戻る。

 上の画面のアプリケーションのように、通常のマウス・カーソルの表示を待機カーソルに変更して、5秒後に再び通常カーソルに戻すには、「現在のカーソル」の状態を「元のカーソル」の状態としていったん保存しておいて、「現在のカーソル」を「待機カーソル」に変更する。そして5秒後に、「現在のカーソル」を、保存しておいた「元のカーソル」に戻せばよい。

 Windowsフォームでは、マウス・カーソルはCursorクラス(System.Windows.Forms名前空間)のオブジェクトで示される。実行中のWindowsアプリケーションの「現在のカーソル」は、そのCursorクラスの静的プロパティであるCurrentプロパティから得られるので、まずこれを「元のカーソル」として一時変数などに保存しておく。次に、システムで用意されている「待機カーソル」を、Cursorsクラス(System.Windows.Forms名前空間)の静的プロパティであるWaitCursorプロパティから取得して、先ほどのCurrentプロパティに設定する。すると、Windowsアプリケーション全体でカーソルが待機状態で表示されるようになる。そして5秒後に、先ほどの「元のカーソル」をCurrentプロパティに再設定して、カーソルを元の状態に戻す。

 この処理を実際に実装したサンプル・プログラムを次に示す。

private void button1_Click(object sender, System.EventArgs e)
{
  // 元のカーソルを保持
  Cursor preCursor = Cursor.Current;

  // カーソルを待機カーソルに変更
  Cursor.Current = Cursors.WaitCursor;

  // 少し時間のかかる処理
  System.Threading.Thread.Sleep(5000);

  // カーソルを元に戻す
  Cursor.Current = preCursor;
}
待機カーソルを表示するサンプル・プログラム
サンプル・プログラム(C#:waitcursor.cs、VB.NET:waitcursor.vb)のダウンロード

 この待機カーソルを使って処理実行中を表現する場合は、1秒以上10秒未満くらいの微妙な長さの処理の場合に最適である。もしこれより長い処理の場合は、「進行状況ダイアログ」を使う方がよいだろう。この「進行状況ダイアログ」を表示する方法については後日あらためて解説する。End of Article

カテゴリ:Windowsフォーム 処理対象:カーソル
使用ライブラリ:Cursorクラス(System.Windows.Forms名前空間)
使用ライブラリ:Cursorsクラス(System.Windows.Forms名前空間)
 
この記事と関連性の高い別の.NET TIPS
簡単に待機カーソルを表示するには?
コンソール画面でカーソルを自由に移動させるには?
Windowsアプリケーション上のマウス・カーソルを変更するには?
コンソール・アプリケーションで進行状況を表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • Kinectが切り開く“夢の近未来” (2012/2/2)
     日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか?
  • 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
     アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する
  • SQL Azure Data Sync入門 (2012/1/30)
     SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説
  • Windows Phoneアプリ市場の現状を分析する (2012/1/27)
     Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH