.NET TIPS

簡単に待機カーソルを表示するには?[2.0のみ、C#、VB]

デジタルアドバンテージ 一色 政彦
2006/03/17

 「TIPS:待機状態のマウス・カーソルを表示するには?」では待機状態のカーソル(WaitCursor。以降、待機カーソル)を表示する方法を紹介したが、.NET Framework 2.0では、この待機カーソルの表示がさらに簡単に実装できるようになっている。

 具体的には、次のいずれかのメソッドを呼び出せばよい(いずれもSystem.Windows.Forms名前空間のクラスが持つプロパティ)。

  • Applicationクラスの静的なUseWaitCursorプロパティ
  • ControlクラスのUseWaitCursorプロパティ

 いずれのプロパティもBoolean型の値を設定/取得でき、Trueを設定すれば待機カーソルが表示され、Falseを設定すればデフォルトのマウス・カーソルに戻る。クラス名を見れば分かるだろうが、Application.UseWaitCursorプロパティを設定すると、アプリケーション全体、すなわちすべてのWindowsフォーム上で待機カーソルが表示されるようにる。また、コントロールのUseWaitCursorプロパティを設定すると、そのコントロールとそのすべての子コントロール上で待機カーソルが表示されるようになる(なお、ここでいう「コントロール」とは、Controlクラスを継承したクラスで、例えばTextBoxコントロールなどのことである)。

 次の画面は、UseWaitCursorプロパティの利用したサンプル・プログラムの実行例である。このサンプル・プログラムで、[アプリケーション全体]ボタンをクリックするとすべてのフォーム上で待機カーソルが表示され(Application.UseWaitCursorプロパティを使用)、[コントロール全体]ボタンをクリックするとその[コントロール全体]ボタン上でのみ待機カーソルが表示される(Control.UseWaitCursorプロパティを使用)という仕様になっている。また、それぞれもう一度クリックするとカーソル形状はデフォルトの状態に戻るというようにトグルする仕様になっている。

UseWaitCursorプロパティを利用したサンプル・プログラムの実行例
[アプリケーション全体]ボタンをクリックするとすべてのフォーム上で待機カーソルが表示され、[コントロール全体]ボタンをクリックするとそのボタン上でのみ待機カーソルが表示される。それぞれもう一度クリックすると待機カーソルは解除され、デフォルトのカーソル形状に戻るという仕様になっている。

 この実装コード(Clickイベント・ハンドラ部分のみを抜粋)は次のとおりだ。

private void button1_Click(object sender, EventArgs e)
{
  Application.UseWaitCursor = !Application.UseWaitCursor;
}

private void button2_Click(object sender, EventArgs e)
{
  button2.UseWaitCursor = !button2.UseWaitCursor;
}
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Application.UseWaitCursor = Not Application.UseWaitCursor
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  Button2.UseWaitCursor = Not Button2.UseWaitCursor
End Sub
UseWaitCursorプロパティを利用したサンプル・プログラムのソース・コード(上:C#、下:VB)
UseWaitCursorプロパティがFalseの場合はTrueを設定し、またTrueの場合はFalseを設定することで、ボタンをクリックするたびに、カーソル形状を待機カーソルと通常カーソルの間でトグルさせている。

 なお、フォームやコントロールをロードする時から待機カーソルを指定したい場合、Visual Studio 2005のIDEのWindowsフォーム・デザイナでフォームを開いて[プロパティ]ウィンドウのUseWaitCursorを「True」に設定すればよい。

 ただし、UseWaitCursorプロパティを利用する際には注意点がある。UseWaitCursorプロパティを設定しても、コントロールやフォームのマウス・カーソル設定が即座に変更されるわけではないらしく(マウス・カーソルが変更されるのは、恐らくマウスが動いたなどのWindowsイベントが発生して、ユーザー・インターフェイス関連の更新があったタイミングだと思われる)、UseWaitCursorプロパティ設定直後に処理を行う次のようなコード(C#の場合)では、待機カーソルが表示されない可能性が高い。

private void button1_Click(object sender, System.EventArgs e)
{
   button2.UseWaitCursor = true;
   System.Threading.Thread.Sleep(5000);
   button2.UseWaitCursor = false;
}

 このようにイベント・ハンドラを抜けずにUseWaitCursorプロパティをオン/オフさせる場合は、前掲のTIPSの方法を取った方が無難である。End of Article

利用可能バージョン:.NET Framework 2.0のみ
カテゴリ:Windowsフォーム 処理対象:カーソル
使用ライブラリ:Applicationクラス(System.Windows.Forms名前空間)
使用ライブラリ:Controleクラス(System.Windows.Forms名前空間)
関連TIPS:待機状態のマウス・カーソルを表示するには?

この記事と関連性の高い別の.NET TIPS
待機状態のマウス・カーソルを表示するには?
コンソール画面でカーソルを自由に移動させるには?
Windowsアプリケーション上のマウス・カーソルを変更するには?
コンソール・アプリケーションで進行状況を表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間