1. ホーム
  2. c#

[解決済み] アプリケーションがビジー状態のときに砂時計を表示する

2023-02-11 01:19:11

質問

WPF を使用して構築されたビューについて、アプリケーションがビジー状態で応答しない場合に、マウス カーソルを砂時計に変更したいと思います。

1つの解決策は

 this.Cursor = Cursors.Wait;

を、UIが応答しなくなる可能性のあるすべての場所に追加します。しかし、明らかにこれは最良の解決策ではありません。これを実現する最善の方法は何なのか、疑問に思っています。

スタイルまたはリソースを使用して、これを達成することは可能ですか?

どのように解決するのですか?

アプリが長くなりそうなときにカーソルを変えてくれる使い捨てのクラスを作りました、こんな感じです。

public class WaitCursor : IDisposable
{
    private Cursor _previousCursor;

    public WaitCursor()
    {
        _previousCursor = Mouse.OverrideCursor;

        Mouse.OverrideCursor = Cursors.Wait;
    }

    #region IDisposable Members

    public void Dispose()
    {
        Mouse.OverrideCursor = _previousCursor;
    }

    #endregion
}

そして、このように使います。

using(new WaitCursor())
{
    // very long task
}

最高のデザインではないかもしれませんが、トリックを行います =)