using System.ComponentModel; using System.IO; namespace System.Windows.Forms { [TypeConverter(typeof(CursorConverter))] public sealed class Cursor : IDisposable { internal Input.Cursor cursor { get; } internal string name = ""; public void Dispose() { cursor?.Dispose(); } public override string ToString() => name; public Cursor(Stream stream) { cursor = new(stream, true); } internal Cursor(Input.Cursor cursor, string name) { this.cursor = cursor; this.name = name; } public static Drawing.Point Position => NativeMethods.GetMousePosition(); public static Cursor Current { get => new Cursor(Input.Mouse.OverrideCursor, ""); set => Input.Mouse.OverrideCursor = value?.cursor; } } }