Feedback

C# - CursorChanger

Veröffentlicht von am 02.11.2006
(3 Bewertungen)
Bietet durch Implementation von IDisposable eine kompakte Möglichkeit, den Cursor für eine bestimmte Zeit zu ändern.
Der ursprünglich angezeigte Cursor wird automatisch wiederhergestellt.


Beispiel:
public class WaitCursorChanger : CursorChanger
{
public WaitCursorChanger(Control control) : base(Cursors.WaitCursor,control)
{ }
}

[...]
private void foo()
{
// Cursor: Default
using (new WaitCursorChanger(this))
{
// Cursor: WaitCursor
using (new CursorChanger(Cursors.Help,this))
{
// Cursor: Help
}
// Cursor: WaitCursor
}
// Cursor: Default
}
GFU-Schulungen  [Anzeige]

Angular mit ASP.NET Core für .NET-Entwickler

.NET ist Ihnen vertraut, als Entwickler verfügen Sie über einschlägige Kenntnisse. In diesem Kurs lernen Sie nun, Angular in .NET-Umgebungen einzusetzen. Sie verstehen das Konzept von Angular und integrieren das clientseitige JS-Framework sicher in.NET-Anwendungen.

VB.NET 2017/2015/2013 Aufbau

Nach dieser Schulung können Sie mittels objektorientierter Modelle in VB.NET 2017/2015/2013 wiederverwendbare Elemente eigenständig erstellen.

/// <summary>
/// Bietet durch Implementation von IDisposable eine kompakte Möglichkeit, den Cursor für eine bestimmte Zeit zu ändern.
/// Der ursprünglich angezeigte Cursor wird automatisch wiederhergestellt
/// </summary>
public class CursorChanger : IDisposable
{
	private Cursor rawCursor;	// der ursprüngliche Cursor, der später wiederhergestellt wird
	private Control control;	// das Control für das der Cursor geändert werden soll 


	/// <summary>
	/// Bietet durch Implementation von IDisposable eine kompakte Möglichkeit, den Cursor für eine bestimmte Zeit zu ändern.
	/// Der ursprünglich angezeigte Cursor wird automatisch wiederhergestellt.
	/// </summary>
	/// <param name="cursor">Der Cursor, der gesetzt werden soll.</param>
	/// <param name="control">Ein Control zum setzen des Cursors. <remarks>Ist dieses Control in (einem) anderen Control(s) enthalten, wird der Cursor des Root-Controls geändert</remarks></param>
	/// <example>
	/// public class WaitCursorChanger : CursorChanger
	/// {
	///	public WaitCursorChanger(Control control) : base(Cursors.WaitCursor,control)
	///	{ }
	/// }
	/// 
	/// [...]
	/// private void foo()
	/// {
	///     // Cursor: Default
	///	using (new WaitCursorChanger(this))
	///	{
	///		// Cursor: WaitCursor
	///		using (new CursorChanger(Cursors.Help,this))
	///		{
	///			// Cursor: Help
	///		}
	///		// Cursor: WaitCursor
	///	}
	///	// Cursor: Default
	/// }
	/// </example>
	public CursorChanger(Cursor cursor,Control control)
	{
		this.control = control;

		// den gewünschten Cursor setzen
		Control rootControl = getRootControl(control);
		this.rawCursor = rootControl.Cursor;
		rootControl.Cursor = cursor;
	}


	/// <summary>
	/// Ermittelt das Root-Control
	/// </summary>
	/// <param name="control">Control, dessen Root-Control ermittelt werden soll</param>
	/// <returns>das Root-Control des übergebenen Controls</returns>
	private Control getRootControl(Control control)
	{
		return (control.Parent==null) ? control : getRootControl(control.Parent);
	}


	/// <summary>
	/// Freigeben des Objektes
	/// </summary>
	void IDisposable.Dispose()
	{
		// den ursprünglichen Cursor wiederherstellen
		getRootControl(control).Cursor = rawCursor;
	}
}
Abgelegt unter Cursor, WaitCursor, Cursors, Control.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!