আমাদের প্রয়োগে এটি করার একটি উপায় হ'ল আইডিস্পোজেবল এবং তারপরে using(){}
যখন কার্সারটি হয়ে যায় তখন তা পুনরায় সেট হয়ে যায় তা নিশ্চিত করতে ব্লকগুলি ব্যবহার করে।
public class OverrideCursor : IDisposable
{
public OverrideCursor(Cursor changeToCursor)
{
Mouse.OverrideCursor = changeToCursor;
}
#region IDisposable Members
public void Dispose()
{
Mouse.OverrideCursor = null;
}
#endregion
}
এবং তারপরে আপনার কোডে:
using (OverrideCursor cursor = new OverrideCursor(Cursors.Wait))
{
// Do work...
}
ওভাররাইডটি শেষ হবে যখন হয়: ব্যবহারের বিবৃতিটির শেষে পৌঁছেছে বা; যদি কোনও ব্যতিক্রম ছুঁড়ে দেওয়া হয় এবং নিয়ন্ত্রণ বিবৃতি শেষ হওয়ার আগে বিবৃতিটিকে অবরুদ্ধ করে দেয়।
হালনাগাদ
কার্সার ঝাঁকুনি প্রতিরোধ করতে আপনি এটি করতে পারেন:
public class OverrideCursor : IDisposable
{
static Stack<Cursor> s_Stack = new Stack<Cursor>();
public OverrideCursor(Cursor changeToCursor)
{
s_Stack.Push(changeToCursor);
if (Mouse.OverrideCursor != changeToCursor)
Mouse.OverrideCursor = changeToCursor;
}
public void Dispose()
{
s_Stack.Pop();
Cursor cursor = s_Stack.Count > 0 ? s_Stack.Peek() : null;
if (cursor != Mouse.OverrideCursor)
Mouse.OverrideCursor = cursor;
}
}