# System.Windows.Forms

``` diff
 namespace System.Windows.Forms {
     public class Button : ButtonBase, IButtonControl {
-        public new event EventHandler DoubleClick;
+        public new event EventHandler? DoubleClick;
-        public new event MouseEventHandler MouseDoubleClick;
+        public new event MouseEventHandler? MouseDoubleClick;
     }
     public abstract class ButtonBase : Control {
-        public Image Image { get; set; }
+        public Image? Image { get; set; }
-        public ImageList ImageList { get; set; }
+        public ImageList? ImageList { get; set; }
-        public new event EventHandler AutoSizeChanged;
+        public new event EventHandler? AutoSizeChanged;
-        public new event EventHandler ImeModeChanged;
+        public new event EventHandler? ImeModeChanged;
     }
     public class DataObject : IDataObject, IDataObject {
-        public virtual Stream GetAudioStream();
+        public virtual Stream? GetAudioStream();
-        public virtual object GetData(string format);
+        public virtual object? GetData(string format);
-        public virtual object GetData(string format, bool autoConvert);
+        public virtual object? GetData(string format, bool autoConvert);
-        public virtual object GetData(Type format);
+        public virtual object? GetData(Type format);
-        public virtual Image GetImage();
+        public virtual Image? GetImage();
-        public virtual void SetData(object data);
+        public virtual void SetData(object? data);
-        public virtual void SetData(string format, bool autoConvert, object data);
+        public virtual void SetData(string format, bool autoConvert, object? data);
-        public virtual void SetData(string format, object data);
+        public virtual void SetData(string format, object? data);
-        public virtual void SetData(Type format, object data);
+        public virtual void SetData(Type format, object? data);
-        int System.Runtime.InteropServices.ComTypes.IDataObject.EnumDAdvise(out IEnumSTATDATA enumAdvise);
+        int System.Runtime.InteropServices.ComTypes.IDataObject.EnumDAdvise(out IEnumSTATDATA? enumAdvise);
     }
     public interface IDataObject {
-        object GetData(string format);
+        object? GetData(string format);
-        object GetData(string format, bool autoConvert);
+        object? GetData(string format, bool autoConvert);
-        object GetData(Type format);
+        object? GetData(Type format);
-        void SetData(object data);
+        void SetData(object? data);
-        void SetData(string format, bool autoConvert, object data);
+        void SetData(string format, bool autoConvert, object? data);
-        void SetData(string format, object data);
+        void SetData(string format, object? data);
-        void SetData(Type format, object data);
+        void SetData(Type format, object? data);
     }
     public class ImageKeyConverter : StringConverter {
-        public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType);
+        public override bool CanConvertFrom(ITypeDescriptorContext? context, Type sourceType);
-        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value);
+        public override object? ConvertFrom(ITypeDescriptorContext? context, CultureInfo? culture, object value);
-        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
+        public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType);
-        public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context);
+        public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext? context);
-        public override bool GetStandardValuesExclusive(ITypeDescriptorContext context);
+        public override bool GetStandardValuesExclusive(ITypeDescriptorContext? context);
-        public override bool GetStandardValuesSupported(ITypeDescriptorContext context);
+        public override bool GetStandardValuesSupported(ITypeDescriptorContext? context);
     }
     public class ListBindingConverter : TypeConverter {
-        public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType);
+        public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destinationType);
-        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType);
+        public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType);
-        public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues);
+        public override object CreateInstance(ITypeDescriptorContext? context, IDictionary propertyValues);
-        public override bool GetCreateInstanceSupported(ITypeDescriptorContext context);
+        public override bool GetCreateInstanceSupported(ITypeDescriptorContext? context);
     }
     public class ListBox : ListControl {
         public class SelectedIndexCollection : ICollection, IEnumerable, IList {
-            bool System.Collections.ICollection.IsSynchronized { get; }
+            bool ICollection.IsSynchronized { get; }
-            object System.Collections.ICollection.SyncRoot { get; }
+            object ICollection.SyncRoot { get; }
-            bool System.Collections.IList.IsFixedSize { get; }
+            bool IList.IsFixedSize { get; }
-            object System.Collections.IList.this[int index] { get; set; }
+            object? IList.this[int index] { get; set; }
-            int System.Collections.IList.Add(object value);
+            int System.Collections.IList.Add(object? value);
-            bool System.Collections.IList.Contains(object selectedIndex);
+            bool System.Collections.IList.Contains(object? selectedIndex);
-            int System.Collections.IList.IndexOf(object selectedIndex);
+            int System.Collections.IList.IndexOf(object? selectedIndex);
-            void System.Collections.IList.Insert(int index, object value);
+            void System.Collections.IList.Insert(int index, object? value);
-            void System.Collections.IList.Remove(object value);
+            void System.Collections.IList.Remove(object? value);
         }
         public class SelectedObjectCollection : ICollection, IEnumerable, IList {
-            bool System.Collections.ICollection.IsSynchronized { get; }
+            bool ICollection.IsSynchronized { get; }
-            object System.Collections.ICollection.SyncRoot { get; }
+            object ICollection.SyncRoot { get; }
-            bool System.Collections.IList.IsFixedSize { get; }
+            bool IList.IsFixedSize { get; }
-            public object this[int index] { get; set; }
+            public object? this[int index] { get; set; }
-            public bool Contains(object selectedObject);
+            public bool Contains(object? selectedObject);
-            public int IndexOf(object selectedObject);
+            public int IndexOf(object? selectedObject);
-            int System.Collections.IList.Add(object value);
+            int System.Collections.IList.Add(object? value);
-            void System.Collections.IList.Insert(int index, object value);
+            void System.Collections.IList.Insert(int index, object? value);
-            void System.Collections.IList.Remove(object value);
+            void System.Collections.IList.Remove(object? value);
         }
     }
     public class NativeWindow : MarshalByRefObject, IHandle, IWin32Window {
-        public static NativeWindow FromHandle(IntPtr handle);
+        public static NativeWindow? FromHandle(IntPtr handle);
     }
     public sealed class PrintDialog : CommonDialog {
-        public PrintDocument Document { get; set; }
+        public PrintDocument? Document { get; set; }
     }
     public class Screen {
-        public static Screen PrimaryScreen { get; }
+        public static Screen? PrimaryScreen { get; }
-        public override bool Equals(object obj);
+        public override bool Equals(object? obj);
     }
     public class ScrollableControl : Control, IArrangedElement, IComponent, IDisposable {
-        public event ScrollEventHandler Scroll;
+        public event ScrollEventHandler? Scroll;
         public class DockPaddingEdges : ICloneable {
-            public override bool Equals(object other);
+            public override bool Equals(object? other);
         }
         public class DockPaddingEdgesConverter : TypeConverter {
-            public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes);
+            public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext? context, object value, Attribute[]? attributes);
-            public override bool GetPropertiesSupported(ITypeDescriptorContext context);
+            public override bool GetPropertiesSupported(ITypeDescriptorContext? context);
         }
     }
     public class ToolStrip : ScrollableControl, IArrangedElement, IComponent, IDisposable, ISupportToolStripPanel {
         public class ToolStripAccessibleObject : Control.ControlAccessibleObject {
-            public override AccessibleObject GetChild(int index);
+            public override AccessibleObject? GetChild(int index);
-            public override AccessibleObject HitTest(int x, int y);
+            public override AccessibleObject? HitTest(int x, int y);
         }
     }
     public class ToolStripContainer : ContainerControl {
+        protected override AccessibleObject CreateAccessibilityInstance();
     }
 }
```

