2009-07-07 14 views
2

、私はループバックグラウンド手続きが進行中であることを視覚的なフィードバックを提供したい(これは、UIを使用してから、ユーザーまたはブロックそれらによって開始されたものではありません)のWinForms - のWinFormsアプリケーションでアクティビティインジケータ

を編集してください - これはいつも進行しており、ループしています。ユーザーは、繰り返しの開始または終了を知る必要はありません。

私はある種の小さな正方形のループアニメーションを考えています。 Mac/iPhoneアプリケーションで頻繁に使用されるセグメント化された「スピナー」のようなもの。

spinner http://img12.imageshack.us/img12/4402/spinner.png

同様のアイデアであるビルトインのWinFormsコントロールはありますか?そうでない場合は、これを行うにはどうすればよいでしょうか?

+1

ウェイトカーソルはどうですか? –

+0

そのアニメーションをフォームに配置できますか?この状態は事実上常に(ユーザーにライブ/自動更新されたデータが表示されていることを本質的に確認しています)、マウスカーソルを変更したくありません。 – xyz

答えて

23

ただ、フォーム上のanimated GIFをドロップすると、あなたはUIスレッドをブロックしていないことを確認してください:

alt text http://files.rsdn.ru/27808/ajax-loader.gif

+1

プロセスが実行されているときに、バックグラウンドプロセスで代理人を使用してアニメーションGIFを表示/非表示することもできます...これは最も簡単な解決策です –

+0

+1そのような素晴らしいリンクの場合 –

1

独自開発のスレッドモデル、またはBackgroundWorkerのいずれかを使用します。

バックグラウンドスレッドは、デリゲートハンドラを使用してスレッドの安全性を考慮して、またはBackgroundWorkerを使用している場合はProgressChangedイベントを使用して、主GUIスレッドにイベントを定期的に戻します。

2

代わりのこの

public void DoWork() 
{ 
    try 
    { 
    this.Cursor = Cursors.WaitCursor; 
    DoSomeBigThing(); 
    . . . . 
    } 
    catch() 
    { 
     . . . .. 
    } 
    finally 
    { 
     . . . . 
     this.Cursor = Cursors.Default; 
    } 
} 
  1. を書くには、(自分のマウスカーソルを作成します。 .curファイル)といくつかの無料ツール(GoogleまたはBing用)
  2. AutoWaitCursorを使用して、作成したカーソルにマウスカーソルを合わせます。

    カーソルmyCursor =新しいカーソル( "myCoolCursor.cur");

+0

https://github.com/rluiten/WinForm -AutoWaitCursor-問題/ blob/master/WinForm%20AutoWaitCursor%20Problem/AutoWaitCursor.cs –

関連する問題