diff --git a/src/System.Windows.Forms/src/PublicAPI.Shipped.txt b/src/System.Windows.Forms/src/PublicAPI.Shipped.txt
index 7e33730830c..32944e995f8 100644
--- a/src/System.Windows.Forms/src/PublicAPI.Shipped.txt
+++ b/src/System.Windows.Forms/src/PublicAPI.Shipped.txt
@@ -60,8 +60,8 @@
~override System.Windows.Forms.ContainerControl.OnMove(System.EventArgs e) -> void
~override System.Windows.Forms.ContainerControl.OnParentChanged(System.EventArgs e) -> void
~override System.Windows.Forms.ContainerControl.OnResize(System.EventArgs e) -> void
-~override System.Windows.Forms.Control.Site.get -> System.ComponentModel.ISite
-~override System.Windows.Forms.Control.Site.set -> void
+override System.Windows.Forms.Control.Site.get -> System.ComponentModel.ISite?
+override System.Windows.Forms.Control.Site.set -> void
~override System.Windows.Forms.ControlBindingsCollection.AddCore(System.Windows.Forms.Binding dataBinding) -> void
~override System.Windows.Forms.ControlBindingsCollection.RemoveCore(System.Windows.Forms.Binding dataBinding) -> void
~override System.Windows.Forms.CurrencyManager.Current.get -> object
@@ -907,8 +907,8 @@ override System.Windows.Forms.TableLayoutPanel.OnPaintBackground(System.Windows.
~System.Windows.Forms.ContainerControl.ActiveControl.get -> System.Windows.Forms.Control
~System.Windows.Forms.ContainerControl.ActiveControl.set -> void
~System.Windows.Forms.ContainerControl.ParentForm.get -> System.Windows.Forms.Form
-~System.Windows.Forms.Control.BeginInvoke(System.Action method) -> System.IAsyncResult
-~System.Windows.Forms.Control.BeginInvoke(System.Delegate method) -> System.IAsyncResult
+System.Windows.Forms.Control.BeginInvoke(System.Action! method) -> System.IAsyncResult!
+System.Windows.Forms.Control.BeginInvoke(System.Delegate! method) -> System.IAsyncResult!
~System.Windows.Forms.Control.BeginInvoke(System.Delegate method, params object[] args) -> System.IAsyncResult
~System.Windows.Forms.Control.Contains(System.Windows.Forms.Control ctl) -> bool
~System.Windows.Forms.Control.CreateGraphics() -> System.Drawing.Graphics
@@ -945,11 +945,11 @@ System.Windows.Forms.Control.ProductVersion.get -> string!
System.Windows.Forms.Control.Region.get -> System.Drawing.Region?
System.Windows.Forms.Control.Region.set -> void
~System.Windows.Forms.Control.ScaleBitmapLogicalToDevice(ref System.Drawing.Bitmap logicalBitmap) -> void
-~System.Windows.Forms.Control.Tag.get -> object
-~System.Windows.Forms.Control.Tag.set -> void
-~System.Windows.Forms.Control.TopLevelControl.get -> System.Windows.Forms.Control
-~System.Windows.Forms.Control.WindowTarget.get -> System.Windows.Forms.IWindowTarget
-~System.Windows.Forms.Control.WindowTarget.set -> void
+System.Windows.Forms.Control.Tag.get -> object?
+System.Windows.Forms.Control.Tag.set -> void
+System.Windows.Forms.Control.TopLevelControl.get -> System.Windows.Forms.Control?
+System.Windows.Forms.Control.WindowTarget.get -> System.Windows.Forms.IWindowTarget!
+System.Windows.Forms.Control.WindowTarget.set -> void
~System.Windows.Forms.ControlBindingsCollection.Add(string propertyName, object dataSource, string dataMember) -> System.Windows.Forms.Binding
~System.Windows.Forms.ControlBindingsCollection.Add(string propertyName, object dataSource, string dataMember, bool formattingEnabled) -> System.Windows.Forms.Binding
~System.Windows.Forms.ControlBindingsCollection.Add(string propertyName, object dataSource, string dataMember, bool formattingEnabled, System.Windows.Forms.DataSourceUpdateMode updateMode) -> System.Windows.Forms.Binding
@@ -1937,8 +1937,8 @@ System.Windows.Forms.TableLayoutPanel.SetRowSpan(System.Windows.Forms.Control! c
~virtual System.Windows.Forms.Control.OnValidated(System.EventArgs e) -> void
~virtual System.Windows.Forms.Control.OnValidating(System.ComponentModel.CancelEventArgs e) -> void
~virtual System.Windows.Forms.Control.OnVisibleChanged(System.EventArgs e) -> void
-~virtual System.Windows.Forms.Control.Text.get -> string
-~virtual System.Windows.Forms.Control.Text.set -> void
+virtual System.Windows.Forms.Control.Text.get -> string!
+virtual System.Windows.Forms.Control.Text.set -> void
~virtual System.Windows.Forms.DataGridView.AdjustColumnHeaderBorderStyle(System.Windows.Forms.DataGridViewAdvancedBorderStyle dataGridViewAdvancedBorderStyleInput, System.Windows.Forms.DataGridViewAdvancedBorderStyle dataGridViewAdvancedBorderStylePlaceholder, bool isFirstDisplayedColumn, bool isLastVisibleColumn) -> System.Windows.Forms.DataGridViewAdvancedBorderStyle
~virtual System.Windows.Forms.DataGridView.AdjustedTopLeftHeaderBorderStyle.get -> System.Windows.Forms.DataGridViewAdvancedBorderStyle
~virtual System.Windows.Forms.DataGridView.CreateColumnsInstance() -> System.Windows.Forms.DataGridViewColumnCollection
@@ -3107,7 +3107,7 @@ override System.Windows.Forms.ListBox.SelectedIndex.set -> void
override System.Windows.Forms.ListBox.SetBoundsCore(int x, int y, int width, int height, System.Windows.Forms.BoundsSpecified specified) -> void
override System.Windows.Forms.ListBox.SetItemCore(int index, object! value) -> void
override System.Windows.Forms.ListBox.SetItemsCore(System.Collections.IList! value) -> void
-override System.Windows.Forms.ListBox.Text.get -> string?
+override System.Windows.Forms.ListBox.Text.get -> string!
override System.Windows.Forms.ListBox.Text.set -> void
override System.Windows.Forms.ListBox.ToString() -> string!
override System.Windows.Forms.ListBox.WndProc(ref System.Windows.Forms.Message m) -> void
@@ -5859,8 +5859,8 @@ System.Windows.Forms.Control.Capture.set -> void
System.Windows.Forms.Control.CausesValidation.get -> bool
System.Windows.Forms.Control.CausesValidation.set -> void
System.Windows.Forms.Control.CausesValidationChanged -> System.EventHandler?
-System.Windows.Forms.Control.ChangeUICues -> System.Windows.Forms.UICuesEventHandler
-System.Windows.Forms.Control.Click -> System.EventHandler
+System.Windows.Forms.Control.ChangeUICues -> System.Windows.Forms.UICuesEventHandler?
+System.Windows.Forms.Control.Click -> System.EventHandler?
System.Windows.Forms.Control.ClientRectangle.get -> System.Drawing.Rectangle
System.Windows.Forms.Control.ClientSize.get -> System.Drawing.Size
System.Windows.Forms.Control.ClientSize.set -> void
@@ -5881,7 +5881,7 @@ System.Windows.Forms.Control.ControlAccessibleObject.NotifyClients(System.Window
System.Windows.Forms.Control.ControlAccessibleObject.NotifyClients(System.Windows.Forms.AccessibleEvents accEvent, int childID) -> void
System.Windows.Forms.Control.ControlAccessibleObject.NotifyClients(System.Windows.Forms.AccessibleEvents accEvent, int objectID, int childID) -> void
System.Windows.Forms.Control.ControlAccessibleObject.Owner.get -> System.Windows.Forms.Control!
-System.Windows.Forms.Control.ControlAdded -> System.Windows.Forms.ControlEventHandler
+System.Windows.Forms.Control.ControlAdded -> System.Windows.Forms.ControlEventHandler?
System.Windows.Forms.Control.ControlCollection
System.Windows.Forms.Control.ControlCollection.Contains(System.Windows.Forms.Control? control) -> bool
System.Windows.Forms.Control.ControlCollection.ControlCollection(System.Windows.Forms.Control! owner) -> void
@@ -5890,7 +5890,7 @@ System.Windows.Forms.Control.ControlCollection.GetChildIndex(System.Windows.Form
System.Windows.Forms.Control.ControlCollection.IndexOf(System.Windows.Forms.Control? control) -> int
System.Windows.Forms.Control.ControlCollection.Owner.get -> System.Windows.Forms.Control!
System.Windows.Forms.Control.ControlCollection.RemoveAt(int index) -> void
-System.Windows.Forms.Control.ControlRemoved -> System.Windows.Forms.ControlEventHandler
+System.Windows.Forms.Control.ControlRemoved -> System.Windows.Forms.ControlEventHandler?
System.Windows.Forms.Control.Controls.get -> System.Windows.Forms.Control.ControlCollection!
System.Windows.Forms.Control.CreateControl() -> void
System.Windows.Forms.Control.Created.get -> bool
@@ -5899,17 +5899,17 @@ System.Windows.Forms.Control.DataBindings.get -> System.Windows.Forms.ControlBin
System.Windows.Forms.Control.DeviceDpi.get -> int
System.Windows.Forms.Control.Disposing.get -> bool
System.Windows.Forms.Control.DockChanged -> System.EventHandler?
-System.Windows.Forms.Control.DoubleClick -> System.EventHandler
-System.Windows.Forms.Control.DpiChangedAfterParent -> System.EventHandler
-System.Windows.Forms.Control.DpiChangedBeforeParent -> System.EventHandler
-System.Windows.Forms.Control.DragDrop -> System.Windows.Forms.DragEventHandler
-System.Windows.Forms.Control.DragEnter -> System.Windows.Forms.DragEventHandler
-System.Windows.Forms.Control.DragLeave -> System.EventHandler
-System.Windows.Forms.Control.DragOver -> System.Windows.Forms.DragEventHandler
+System.Windows.Forms.Control.DoubleClick -> System.EventHandler?
+System.Windows.Forms.Control.DpiChangedAfterParent -> System.EventHandler?
+System.Windows.Forms.Control.DpiChangedBeforeParent -> System.EventHandler?
+System.Windows.Forms.Control.DragDrop -> System.Windows.Forms.DragEventHandler?
+System.Windows.Forms.Control.DragEnter -> System.Windows.Forms.DragEventHandler?
+System.Windows.Forms.Control.DragLeave -> System.EventHandler?
+System.Windows.Forms.Control.DragOver -> System.Windows.Forms.DragEventHandler?
System.Windows.Forms.Control.Enabled.get -> bool
System.Windows.Forms.Control.Enabled.set -> void
System.Windows.Forms.Control.EnabledChanged -> System.EventHandler?
-System.Windows.Forms.Control.Enter -> System.EventHandler
+System.Windows.Forms.Control.Enter -> System.EventHandler?
System.Windows.Forms.Control.Focus() -> bool
System.Windows.Forms.Control.FontChanged -> System.EventHandler?
System.Windows.Forms.Control.FontHeight.get -> int
@@ -5918,15 +5918,15 @@ System.Windows.Forms.Control.ForeColorChanged -> System.EventHandler?
System.Windows.Forms.Control.GetAutoSizeMode() -> System.Windows.Forms.AutoSizeMode
System.Windows.Forms.Control.GetStyle(System.Windows.Forms.ControlStyles flag) -> bool
System.Windows.Forms.Control.GetTopLevel() -> bool
-System.Windows.Forms.Control.GiveFeedback -> System.Windows.Forms.GiveFeedbackEventHandler
-System.Windows.Forms.Control.GotFocus -> System.EventHandler
+System.Windows.Forms.Control.GiveFeedback -> System.Windows.Forms.GiveFeedbackEventHandler?
+System.Windows.Forms.Control.GotFocus -> System.EventHandler?
System.Windows.Forms.Control.Handle.get -> System.IntPtr
-System.Windows.Forms.Control.HandleCreated -> System.EventHandler
-System.Windows.Forms.Control.HandleDestroyed -> System.EventHandler
+System.Windows.Forms.Control.HandleCreated -> System.EventHandler?
+System.Windows.Forms.Control.HandleDestroyed -> System.EventHandler?
System.Windows.Forms.Control.HasChildren.get -> bool
System.Windows.Forms.Control.Height.get -> int
System.Windows.Forms.Control.Height.set -> void
-System.Windows.Forms.Control.HelpRequested -> System.Windows.Forms.HelpEventHandler
+System.Windows.Forms.Control.HelpRequested -> System.Windows.Forms.HelpEventHandler?
System.Windows.Forms.Control.Hide() -> void
System.Windows.Forms.Control.ImeMode.get -> System.Windows.Forms.ImeMode
System.Windows.Forms.Control.ImeMode.set -> void
@@ -5935,7 +5935,7 @@ System.Windows.Forms.Control.Invalidate() -> void
System.Windows.Forms.Control.Invalidate(bool invalidateChildren) -> void
System.Windows.Forms.Control.Invalidate(System.Drawing.Rectangle rc) -> void
System.Windows.Forms.Control.Invalidate(System.Drawing.Rectangle rc, bool invalidateChildren) -> void
-System.Windows.Forms.Control.Invalidated -> System.Windows.Forms.InvalidateEventHandler
+System.Windows.Forms.Control.Invalidated -> System.Windows.Forms.InvalidateEventHandler?
System.Windows.Forms.Control.InvokeRequired.get -> bool
System.Windows.Forms.Control.IsAccessible.get -> bool
System.Windows.Forms.Control.IsAccessible.set -> void
@@ -5943,11 +5943,11 @@ System.Windows.Forms.Control.IsAncestorSiteInDesignMode.get -> bool
System.Windows.Forms.Control.IsDisposed.get -> bool
System.Windows.Forms.Control.IsHandleCreated.get -> bool
System.Windows.Forms.Control.IsMirrored.get -> bool
-System.Windows.Forms.Control.KeyDown -> System.Windows.Forms.KeyEventHandler
-System.Windows.Forms.Control.KeyPress -> System.Windows.Forms.KeyPressEventHandler
-System.Windows.Forms.Control.KeyUp -> System.Windows.Forms.KeyEventHandler
-System.Windows.Forms.Control.Layout -> System.Windows.Forms.LayoutEventHandler
-System.Windows.Forms.Control.Leave -> System.EventHandler
+System.Windows.Forms.Control.KeyDown -> System.Windows.Forms.KeyEventHandler?
+System.Windows.Forms.Control.KeyPress -> System.Windows.Forms.KeyPressEventHandler?
+System.Windows.Forms.Control.KeyUp -> System.Windows.Forms.KeyEventHandler?
+System.Windows.Forms.Control.Layout -> System.Windows.Forms.LayoutEventHandler?
+System.Windows.Forms.Control.Leave -> System.EventHandler?
System.Windows.Forms.Control.Left.get -> int
System.Windows.Forms.Control.Left.set -> void
System.Windows.Forms.Control.Location.get -> System.Drawing.Point
@@ -5955,34 +5955,34 @@ System.Windows.Forms.Control.Location.set -> void
System.Windows.Forms.Control.LocationChanged -> System.EventHandler?
System.Windows.Forms.Control.LogicalToDeviceUnits(int value) -> int
System.Windows.Forms.Control.LogicalToDeviceUnits(System.Drawing.Size value) -> System.Drawing.Size
-System.Windows.Forms.Control.LostFocus -> System.EventHandler
+System.Windows.Forms.Control.LostFocus -> System.EventHandler?
System.Windows.Forms.Control.Margin.get -> System.Windows.Forms.Padding
System.Windows.Forms.Control.Margin.set -> void
System.Windows.Forms.Control.MarginChanged -> System.EventHandler?
-System.Windows.Forms.Control.MouseCaptureChanged -> System.EventHandler
-System.Windows.Forms.Control.MouseClick -> System.Windows.Forms.MouseEventHandler
-System.Windows.Forms.Control.MouseDoubleClick -> System.Windows.Forms.MouseEventHandler
-System.Windows.Forms.Control.MouseDown -> System.Windows.Forms.MouseEventHandler
-System.Windows.Forms.Control.MouseEnter -> System.EventHandler
-System.Windows.Forms.Control.MouseHover -> System.EventHandler
-System.Windows.Forms.Control.MouseLeave -> System.EventHandler
-System.Windows.Forms.Control.MouseMove -> System.Windows.Forms.MouseEventHandler
-System.Windows.Forms.Control.MouseUp -> System.Windows.Forms.MouseEventHandler
-System.Windows.Forms.Control.MouseWheel -> System.Windows.Forms.MouseEventHandler
-System.Windows.Forms.Control.Move -> System.EventHandler
+System.Windows.Forms.Control.MouseCaptureChanged -> System.EventHandler?
+System.Windows.Forms.Control.MouseClick -> System.Windows.Forms.MouseEventHandler?
+System.Windows.Forms.Control.MouseDoubleClick -> System.Windows.Forms.MouseEventHandler?
+System.Windows.Forms.Control.MouseDown -> System.Windows.Forms.MouseEventHandler?
+System.Windows.Forms.Control.MouseEnter -> System.EventHandler?
+System.Windows.Forms.Control.MouseHover -> System.EventHandler?
+System.Windows.Forms.Control.MouseLeave -> System.EventHandler?
+System.Windows.Forms.Control.MouseMove -> System.Windows.Forms.MouseEventHandler?
+System.Windows.Forms.Control.MouseUp -> System.Windows.Forms.MouseEventHandler?
+System.Windows.Forms.Control.MouseWheel -> System.Windows.Forms.MouseEventHandler?
+System.Windows.Forms.Control.Move -> System.EventHandler?
System.Windows.Forms.Control.Padding.get -> System.Windows.Forms.Padding
System.Windows.Forms.Control.Padding.set -> void
-System.Windows.Forms.Control.PaddingChanged -> System.EventHandler
-System.Windows.Forms.Control.Paint -> System.Windows.Forms.PaintEventHandler
-System.Windows.Forms.Control.ParentChanged -> System.EventHandler
+System.Windows.Forms.Control.PaddingChanged -> System.EventHandler?
+System.Windows.Forms.Control.Paint -> System.Windows.Forms.PaintEventHandler?
+System.Windows.Forms.Control.ParentChanged -> System.EventHandler?
System.Windows.Forms.Control.PerformLayout() -> void
System.Windows.Forms.Control.PointToClient(System.Drawing.Point p) -> System.Drawing.Point
System.Windows.Forms.Control.PointToScreen(System.Drawing.Point p) -> System.Drawing.Point
System.Windows.Forms.Control.PreferredSize.get -> System.Drawing.Size
System.Windows.Forms.Control.PreProcessControlMessage(ref System.Windows.Forms.Message msg) -> System.Windows.Forms.PreProcessControlState
-System.Windows.Forms.Control.PreviewKeyDown -> System.Windows.Forms.PreviewKeyDownEventHandler
-System.Windows.Forms.Control.QueryAccessibilityHelp -> System.Windows.Forms.QueryAccessibilityHelpEventHandler
-System.Windows.Forms.Control.QueryContinueDrag -> System.Windows.Forms.QueryContinueDragEventHandler
+System.Windows.Forms.Control.PreviewKeyDown -> System.Windows.Forms.PreviewKeyDownEventHandler?
+System.Windows.Forms.Control.QueryAccessibilityHelp -> System.Windows.Forms.QueryAccessibilityHelpEventHandler?
+System.Windows.Forms.Control.QueryContinueDrag -> System.Windows.Forms.QueryContinueDragEventHandler?
System.Windows.Forms.Control.RecreateHandle() -> void
System.Windows.Forms.Control.RecreatingHandle.get -> bool
System.Windows.Forms.Control.RectangleToClient(System.Drawing.Rectangle r) -> System.Drawing.Rectangle
@@ -5992,7 +5992,7 @@ System.Windows.Forms.Control.RenderRightToLeft.get -> bool
System.Windows.Forms.Control.ResetBindings() -> void
System.Windows.Forms.Control.ResetImeMode() -> void
System.Windows.Forms.Control.ResetMouseEventArgs() -> void
-System.Windows.Forms.Control.Resize -> System.EventHandler
+System.Windows.Forms.Control.Resize -> System.EventHandler?
System.Windows.Forms.Control.ResizeRedraw.get -> bool
System.Windows.Forms.Control.ResizeRedraw.set -> void
System.Windows.Forms.Control.ResumeLayout() -> void
@@ -6019,17 +6019,17 @@ System.Windows.Forms.Control.SetTopLevel(bool value) -> void
System.Windows.Forms.Control.Show() -> void
System.Windows.Forms.Control.Size.get -> System.Drawing.Size
System.Windows.Forms.Control.Size.set -> void
-System.Windows.Forms.Control.SizeChanged -> System.EventHandler
-System.Windows.Forms.Control.StyleChanged -> System.EventHandler
+System.Windows.Forms.Control.SizeChanged -> System.EventHandler?
+System.Windows.Forms.Control.StyleChanged -> System.EventHandler?
System.Windows.Forms.Control.SuspendLayout() -> void
-System.Windows.Forms.Control.SystemColorsChanged -> System.EventHandler
+System.Windows.Forms.Control.SystemColorsChanged -> System.EventHandler?
System.Windows.Forms.Control.TabIndex.get -> int
System.Windows.Forms.Control.TabIndex.set -> void
-System.Windows.Forms.Control.TabIndexChanged -> System.EventHandler
+System.Windows.Forms.Control.TabIndexChanged -> System.EventHandler?
System.Windows.Forms.Control.TabStop.get -> bool
System.Windows.Forms.Control.TabStop.set -> void
-System.Windows.Forms.Control.TabStopChanged -> System.EventHandler
-System.Windows.Forms.Control.TextChanged -> System.EventHandler
+System.Windows.Forms.Control.TabStopChanged -> System.EventHandler?
+System.Windows.Forms.Control.TextChanged -> System.EventHandler?
System.Windows.Forms.Control.Top.get -> int
System.Windows.Forms.Control.Top.set -> void
System.Windows.Forms.Control.Update() -> void
@@ -6040,11 +6040,11 @@ System.Windows.Forms.Control.UpdateStyles() -> void
System.Windows.Forms.Control.UpdateZOrder() -> void
System.Windows.Forms.Control.UseWaitCursor.get -> bool
System.Windows.Forms.Control.UseWaitCursor.set -> void
-System.Windows.Forms.Control.Validated -> System.EventHandler
-System.Windows.Forms.Control.Validating -> System.ComponentModel.CancelEventHandler
+System.Windows.Forms.Control.Validated -> System.EventHandler?
+System.Windows.Forms.Control.Validating -> System.ComponentModel.CancelEventHandler?
System.Windows.Forms.Control.Visible.get -> bool
System.Windows.Forms.Control.Visible.set -> void
-System.Windows.Forms.Control.VisibleChanged -> System.EventHandler
+System.Windows.Forms.Control.VisibleChanged -> System.EventHandler?
System.Windows.Forms.Control.Width.get -> int
System.Windows.Forms.Control.Width.set -> void
System.Windows.Forms.ControlBindingsCollection
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/ButtonBase.cs b/src/System.Windows.Forms/src/System/Windows/Forms/ButtonBase.cs
index c43dbabbffd..c665774a9e9 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/ButtonBase.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/ButtonBase.cs
@@ -4,6 +4,7 @@
using System.ComponentModel;
using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
using System.Drawing;
using System.Drawing.Design;
using System.Windows.Forms.ButtonInternal;
@@ -645,6 +646,7 @@ internal bool ShowToolTip
[Editor("System.ComponentModel.Design.MultilineStringEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)),
SettingsBindable(true)]
+ [AllowNull]
public override string Text
{
get => base.Text;
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/Control.cs b/src/System.Windows.Forms/src/System/Windows/Forms/Control.cs
index 2374c05c69b..42cfba6fd73 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/Control.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/Control.cs
@@ -3320,14 +3320,14 @@ public event EventHandler? RightToLeftChanged
///
[EditorBrowsable(EditorBrowsableState.Advanced)]
protected virtual bool ScaleChildren => true;
-#nullable disable
+
///
/// Stores scaled font from Dpi changed values. This is required to distinguish the Font change from
/// Dpi changed events and explicit Font change/assignment. Caching Font values for each Dpi is complex.
/// ToDo: Look into caching Dpi and control bounds for each Dpi to improve perf.
/// https://github.com/dotnet/winforms/issues/5047
///
- internal Font ScaledControlFont
+ internal Font? ScaledControlFont
{
get => _scaledControlFont;
set
@@ -3344,13 +3344,13 @@ internal Font ScaledControlFont
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
- public override ISite Site
+ public override ISite? Site
{
get => base.Site;
set
{
- AmbientProperties oldAmbients = AmbientPropertiesService;
- AmbientProperties newAmbients = null;
+ AmbientProperties? oldAmbients = AmbientPropertiesService;
+ AmbientProperties? newAmbients = null;
if (value is not null)
{
@@ -3365,10 +3365,10 @@ public override ISite Site
bool checkForeColor = !Properties.ContainsObject(s_foreColorProperty);
bool checkCursor = !Properties.ContainsObject(s_cursorProperty);
- Font oldFont = null;
+ Font? oldFont = null;
Color oldBackColor = Color.Empty;
Color oldForeColor = Color.Empty;
- Cursor oldCursor = null;
+ Cursor? oldCursor = null;
if (checkFont)
{
@@ -3393,7 +3393,7 @@ public override ISite Site
Properties.SetObject(s_ambientPropertiesServiceProperty, newAmbients);
base.Site = value;
- if (checkFont && !oldFont.Equals(Font))
+ if (checkFont && !oldFont!.Equals(Font))
{
OnFontChanged(EventArgs.Empty);
}
@@ -3408,7 +3408,7 @@ public override ISite Site
OnBackColorChanged(EventArgs.Empty);
}
- if (checkCursor && oldCursor.Equals(Cursor))
+ if (checkCursor && oldCursor!.Equals(Cursor))
{
OnCursorChanged(EventArgs.Empty);
}
@@ -3435,7 +3435,7 @@ public Size Size
[SRCategory(nameof(SR.CatPropertyChanged))]
[SRDescription(nameof(SR.ControlOnSizeChangedDescr))]
- public event EventHandler SizeChanged
+ public event EventHandler? SizeChanged
{
add => Events.AddHandler(s_sizeEvent, value);
remove => Events.RemoveHandler(s_sizeEvent, value);
@@ -3468,7 +3468,7 @@ public int TabIndex
[SRCategory(nameof(SR.CatPropertyChanged))]
[SRDescription(nameof(SR.ControlOnTabIndexChangedDescr))]
- public event EventHandler TabIndexChanged
+ public event EventHandler? TabIndexChanged
{
add => Events.AddHandler(s_tabIndexEvent, value);
remove => Events.RemoveHandler(s_tabIndexEvent, value);
@@ -3515,7 +3515,7 @@ internal bool TabStopInternal
[SRCategory(nameof(SR.CatPropertyChanged))]
[SRDescription(nameof(SR.ControlOnTabStopChangedDescr))]
- public event EventHandler TabStopChanged
+ public event EventHandler? TabStopChanged
{
add => Events.AddHandler(s_tabStopEvent, value);
remove => Events.RemoveHandler(s_tabStopEvent, value);
@@ -3527,7 +3527,7 @@ public event EventHandler TabStopChanged
[SRDescription(nameof(SR.ControlTagDescr))]
[DefaultValue(null)]
[TypeConverter(typeof(StringConverter))]
- public object Tag
+ public object? Tag
{
get => Properties.GetObject(s_userDataProperty);
set => Properties.SetObject(s_userDataProperty, value);
@@ -3541,9 +3541,10 @@ public object Tag
[Bindable(true)]
[DispId((int)Ole32.DispatchID.TEXT)]
[SRDescription(nameof(SR.ControlTextDescr))]
+ [AllowNull]
public virtual string Text
{
- get => CacheTextInternal ? _text ?? "" : WindowText;
+ get => CacheTextInternal ? _text ?? string.Empty : WindowText;
set
{
if (value is null)
@@ -3566,9 +3567,9 @@ public virtual string Text
if (IsMnemonicsListenerAxSourced)
{
- for (Control ctl = this; ctl is not null; ctl = ctl.ParentInternal)
+ for (Control? ctl = this; ctl is not null; ctl = ctl.ParentInternal)
{
- ActiveXImpl activeXImpl = (ActiveXImpl)ctl.Properties.GetObject(s_activeXImplProperty);
+ ActiveXImpl? activeXImpl = (ActiveXImpl?)ctl.Properties.GetObject(s_activeXImplProperty);
if (activeXImpl is not null)
{
activeXImpl.UpdateAccelTable();
@@ -3581,7 +3582,7 @@ public virtual string Text
[SRCategory(nameof(SR.CatPropertyChanged))]
[SRDescription(nameof(SR.ControlOnTextChangedDescr))]
- public event EventHandler TextChanged
+ public event EventHandler? TextChanged
{
add => Events.AddHandler(s_textEvent, value);
remove => Events.RemoveHandler(s_textEvent, value);
@@ -3611,13 +3612,13 @@ public int Top
[EditorBrowsable(EditorBrowsableState.Advanced)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[SRDescription(nameof(SR.ControlTopLevelControlDescr))]
- public Control TopLevelControl => TopLevelControlInternal;
+ public Control? TopLevelControl => TopLevelControlInternal;
- internal Control TopLevelControlInternal
+ internal Control? TopLevelControlInternal
{
get
{
- Control control = this;
+ Control? control = this;
while (control is not null && !control.GetTopLevel())
{
control = control.ParentInternal;
@@ -3780,7 +3781,7 @@ public bool UseWaitCursor
if (GetState(States.UseWaitCursor) != value)
{
SetState(States.UseWaitCursor, value);
- ControlCollection controlsCollection = (ControlCollection)Properties.GetObject(s_controlsCollectionProperty);
+ ControlCollection? controlsCollection = (ControlCollection?)Properties.GetObject(s_controlsCollectionProperty);
if (controlsCollection is not null)
{
@@ -3841,7 +3842,7 @@ private ControlVersionInfo VersionInfo
{
get
{
- ControlVersionInfo info = (ControlVersionInfo)Properties.GetObject(s_controlVersionInfoProperty);
+ ControlVersionInfo? info = (ControlVersionInfo?)Properties.GetObject(s_controlVersionInfoProperty);
if (info is null)
{
info = new ControlVersionInfo(this);
@@ -3883,7 +3884,7 @@ public bool Visible
///
[SRCategory(nameof(SR.CatPropertyChanged))]
[SRDescription(nameof(SR.ControlOnVisibleChangedDescr))]
- public event EventHandler VisibleChanged
+ public event EventHandler? VisibleChanged
{
add => Events.AddHandler(s_visibleEvent, value);
remove => Events.RemoveHandler(s_visibleEvent, value);
@@ -4035,7 +4036,7 @@ internal virtual string WindowText
///
[SRCategory(nameof(SR.CatAction))]
[SRDescription(nameof(SR.ControlOnClickDescr))]
- public event EventHandler Click
+ public event EventHandler? Click
{
add => Events.AddHandler(s_clickEvent, value);
remove => Events.RemoveHandler(s_clickEvent, value);
@@ -4048,7 +4049,7 @@ public event EventHandler Click
[Browsable(true)]
[EditorBrowsable(EditorBrowsableState.Advanced)]
[SRDescription(nameof(SR.ControlOnControlAddedDescr))]
- public event ControlEventHandler ControlAdded
+ public event ControlEventHandler? ControlAdded
{
add => Events.AddHandler(s_controlAddedEvent, value);
remove => Events.RemoveHandler(s_controlAddedEvent, value);
@@ -4061,7 +4062,7 @@ public event ControlEventHandler ControlAdded
[Browsable(true)]
[EditorBrowsable(EditorBrowsableState.Advanced)]
[SRDescription(nameof(SR.ControlOnControlRemovedDescr))]
- public event ControlEventHandler ControlRemoved
+ public event ControlEventHandler? ControlRemoved
{
add => Events.AddHandler(s_controlRemovedEvent, value);
remove => Events.RemoveHandler(s_controlRemovedEvent, value);
@@ -4069,7 +4070,7 @@ public event ControlEventHandler ControlRemoved
[SRCategory(nameof(SR.CatDragDrop))]
[SRDescription(nameof(SR.ControlOnDragDropDescr))]
- public event DragEventHandler DragDrop
+ public event DragEventHandler? DragDrop
{
add => Events.AddHandler(s_dragDropEvent, value);
remove => Events.RemoveHandler(s_dragDropEvent, value);
@@ -4077,7 +4078,7 @@ public event DragEventHandler DragDrop
[SRCategory(nameof(SR.CatDragDrop))]
[SRDescription(nameof(SR.ControlOnDragEnterDescr))]
- public event DragEventHandler DragEnter
+ public event DragEventHandler? DragEnter
{
add => Events.AddHandler(s_dragEnterEvent, value);
remove => Events.RemoveHandler(s_dragEnterEvent, value);
@@ -4085,7 +4086,7 @@ public event DragEventHandler DragEnter
[SRCategory(nameof(SR.CatDragDrop))]
[SRDescription(nameof(SR.ControlOnDragOverDescr))]
- public event DragEventHandler DragOver
+ public event DragEventHandler? DragOver
{
add => Events.AddHandler(s_dragOverEvent, value);
remove => Events.RemoveHandler(s_dragOverEvent, value);
@@ -4093,7 +4094,7 @@ public event DragEventHandler DragOver
[SRCategory(nameof(SR.CatDragDrop))]
[SRDescription(nameof(SR.ControlOnDragLeaveDescr))]
- public event EventHandler DragLeave
+ public event EventHandler? DragLeave
{
add => Events.AddHandler(s_dragLeaveEvent, value);
remove => Events.RemoveHandler(s_dragLeaveEvent, value);
@@ -4101,7 +4102,7 @@ public event EventHandler DragLeave
[SRCategory(nameof(SR.CatDragDrop))]
[SRDescription(nameof(SR.ControlOnGiveFeedbackDescr))]
- public event GiveFeedbackEventHandler GiveFeedback
+ public event GiveFeedbackEventHandler? GiveFeedback
{
add => Events.AddHandler(s_giveFeedbackEvent, value);
remove => Events.RemoveHandler(s_giveFeedbackEvent, value);
@@ -4114,7 +4115,7 @@ public event GiveFeedbackEventHandler GiveFeedback
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Advanced)]
[SRDescription(nameof(SR.ControlOnCreateHandleDescr))]
- public event EventHandler HandleCreated
+ public event EventHandler? HandleCreated
{
add => Events.AddHandler(s_handleCreatedEvent, value);
remove => Events.RemoveHandler(s_handleCreatedEvent, value);
@@ -4127,7 +4128,7 @@ public event EventHandler HandleCreated
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Advanced)]
[SRDescription(nameof(SR.ControlOnDestroyHandleDescr))]
- public event EventHandler HandleDestroyed
+ public event EventHandler? HandleDestroyed
{
add => Events.AddHandler(s_handleDestroyedEvent, value);
remove => Events.RemoveHandler(s_handleDestroyedEvent, value);
@@ -4135,7 +4136,7 @@ public event EventHandler HandleDestroyed
[SRCategory(nameof(SR.CatBehavior))]
[SRDescription(nameof(SR.ControlOnHelpDescr))]
- public event HelpEventHandler HelpRequested
+ public event HelpEventHandler? HelpRequested
{
add => Events.AddHandler(s_helpRequestedEvent, value);
remove => Events.RemoveHandler(s_helpRequestedEvent, value);
@@ -4145,7 +4146,7 @@ public event HelpEventHandler HelpRequested
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Advanced)]
[SRDescription(nameof(SR.ControlOnInvalidateDescr))]
- public event InvalidateEventHandler Invalidated
+ public event InvalidateEventHandler? Invalidated
{
add => Events.AddHandler(s_invalidatedEvent, value);
remove => Events.RemoveHandler(s_invalidatedEvent, value);
@@ -4189,7 +4190,7 @@ public Padding Padding
[SRCategory(nameof(SR.CatLayout))]
[SRDescription(nameof(SR.ControlOnPaddingChangedDescr))]
- public event EventHandler PaddingChanged
+ public event EventHandler? PaddingChanged
{
add => Events.AddHandler(s_paddingChangedEvent, value);
remove => Events.RemoveHandler(s_paddingChangedEvent, value);
@@ -4197,7 +4198,7 @@ public event EventHandler PaddingChanged
[SRCategory(nameof(SR.CatAppearance))]
[SRDescription(nameof(SR.ControlOnPaintDescr))]
- public event PaintEventHandler Paint
+ public event PaintEventHandler? Paint
{
add => Events.AddHandler(s_paintEvent, value);
remove => Events.RemoveHandler(s_paintEvent, value);
@@ -4205,7 +4206,7 @@ public event PaintEventHandler Paint
[SRCategory(nameof(SR.CatDragDrop))]
[SRDescription(nameof(SR.ControlOnQueryContinueDragDescr))]
- public event QueryContinueDragEventHandler QueryContinueDrag
+ public event QueryContinueDragEventHandler? QueryContinueDrag
{
add => Events.AddHandler(s_queryContinueDragEvent, value);
remove => Events.RemoveHandler(s_queryContinueDragEvent, value);
@@ -4213,7 +4214,7 @@ public event QueryContinueDragEventHandler QueryContinueDrag
[SRCategory(nameof(SR.CatBehavior))]
[SRDescription(nameof(SR.ControlOnQueryAccessibilityHelpDescr))]
- public event QueryAccessibilityHelpEventHandler QueryAccessibilityHelp
+ public event QueryAccessibilityHelpEventHandler? QueryAccessibilityHelp
{
add => Events.AddHandler(s_queryAccessibilityHelpEvent, value);
remove => Events.RemoveHandler(s_queryAccessibilityHelpEvent, value);
@@ -4224,7 +4225,7 @@ public event QueryAccessibilityHelpEventHandler QueryAccessibilityHelp
///
[SRCategory(nameof(SR.CatAction))]
[SRDescription(nameof(SR.ControlOnDoubleClickDescr))]
- public event EventHandler DoubleClick
+ public event EventHandler? DoubleClick
{
add => Events.AddHandler(s_doubleClickEvent, value);
remove => Events.RemoveHandler(s_doubleClickEvent, value);
@@ -4235,7 +4236,7 @@ public event EventHandler DoubleClick
///
[SRCategory(nameof(SR.CatFocus))]
[SRDescription(nameof(SR.ControlOnEnterDescr))]
- public event EventHandler Enter
+ public event EventHandler? Enter
{
add => Events.AddHandler(s_enterEvent, value);
remove => Events.RemoveHandler(s_enterEvent, value);
@@ -4248,7 +4249,7 @@ public event EventHandler Enter
[SRDescription(nameof(SR.ControlOnGotFocusDescr))]
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Advanced)]
- public event EventHandler GotFocus
+ public event EventHandler? GotFocus
{
add => Events.AddHandler(s_gotFocusEvent, value);
remove => Events.RemoveHandler(s_gotFocusEvent, value);
@@ -4259,7 +4260,7 @@ public event EventHandler GotFocus
///
[SRCategory(nameof(SR.CatKey))]
[SRDescription(nameof(SR.ControlOnKeyDownDescr))]
- public event KeyEventHandler KeyDown
+ public event KeyEventHandler? KeyDown
{
add => Events.AddHandler(s_keyDownEvent, value);
remove => Events.RemoveHandler(s_keyDownEvent, value);
@@ -4270,7 +4271,7 @@ public event KeyEventHandler KeyDown
///
[SRCategory(nameof(SR.CatKey))]
[SRDescription(nameof(SR.ControlOnKeyPressDescr))]
- public event KeyPressEventHandler KeyPress
+ public event KeyPressEventHandler? KeyPress
{
add => Events.AddHandler(s_keyPressEvent, value);
remove => Events.RemoveHandler(s_keyPressEvent, value);
@@ -4281,7 +4282,7 @@ public event KeyPressEventHandler KeyPress
///
[SRCategory(nameof(SR.CatKey))]
[SRDescription(nameof(SR.ControlOnKeyUpDescr))]
- public event KeyEventHandler KeyUp
+ public event KeyEventHandler? KeyUp
{
add => Events.AddHandler(s_keyUpEvent, value);
remove => Events.RemoveHandler(s_keyUpEvent, value);
@@ -4289,7 +4290,7 @@ public event KeyEventHandler KeyUp
[SRCategory(nameof(SR.CatLayout))]
[SRDescription(nameof(SR.ControlOnLayoutDescr))]
- public event LayoutEventHandler Layout
+ public event LayoutEventHandler? Layout
{
add => Events.AddHandler(s_layoutEvent, value);
remove => Events.RemoveHandler(s_layoutEvent, value);
@@ -4300,7 +4301,7 @@ public event LayoutEventHandler Layout
///
[SRCategory(nameof(SR.CatFocus))]
[SRDescription(nameof(SR.ControlOnLeaveDescr))]
- public event EventHandler Leave
+ public event EventHandler? Leave
{
add => Events.AddHandler(s_leaveEvent, value);
remove => Events.RemoveHandler(s_leaveEvent, value);
@@ -4313,7 +4314,7 @@ public event EventHandler Leave
[SRDescription(nameof(SR.ControlOnLostFocusDescr))]
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Advanced)]
- public event EventHandler LostFocus
+ public event EventHandler? LostFocus
{
add => Events.AddHandler(s_lostFocusEvent, value);
remove => Events.RemoveHandler(s_lostFocusEvent, value);
@@ -4324,7 +4325,7 @@ public event EventHandler LostFocus
///
[SRCategory(nameof(SR.CatAction))]
[SRDescription(nameof(SR.ControlOnMouseClickDescr))]
- public event MouseEventHandler MouseClick
+ public event MouseEventHandler? MouseClick
{
add => Events.AddHandler(s_mouseClickEvent, value);
remove => Events.RemoveHandler(s_mouseClickEvent, value);
@@ -4335,7 +4336,7 @@ public event MouseEventHandler MouseClick
///
[SRCategory(nameof(SR.CatAction))]
[SRDescription(nameof(SR.ControlOnMouseDoubleClickDescr))]
- public event MouseEventHandler MouseDoubleClick
+ public event MouseEventHandler? MouseDoubleClick
{
add => Events.AddHandler(s_mouseDoubleClickEvent, value);
remove => Events.RemoveHandler(s_mouseDoubleClickEvent, value);
@@ -4346,7 +4347,7 @@ public event MouseEventHandler MouseDoubleClick
///
[SRCategory(nameof(SR.CatAction))]
[SRDescription(nameof(SR.ControlOnMouseCaptureChangedDescr))]
- public event EventHandler MouseCaptureChanged
+ public event EventHandler? MouseCaptureChanged
{
add => Events.AddHandler(s_mouseCaptureChangedEvent, value);
remove => Events.RemoveHandler(s_mouseCaptureChangedEvent, value);
@@ -4358,7 +4359,7 @@ public event EventHandler MouseCaptureChanged
///
[SRCategory(nameof(SR.CatMouse))]
[SRDescription(nameof(SR.ControlOnMouseDownDescr))]
- public event MouseEventHandler MouseDown
+ public event MouseEventHandler? MouseDown
{
add => Events.AddHandler(s_mouseDownEvent, value);
remove => Events.RemoveHandler(s_mouseDownEvent, value);
@@ -4369,7 +4370,7 @@ public event MouseEventHandler MouseDown
///
[SRCategory(nameof(SR.CatMouse))]
[SRDescription(nameof(SR.ControlOnMouseEnterDescr))]
- public event EventHandler MouseEnter
+ public event EventHandler? MouseEnter
{
add => Events.AddHandler(s_mouseEnterEvent, value);
remove => Events.RemoveHandler(s_mouseEnterEvent, value);
@@ -4380,7 +4381,7 @@ public event EventHandler MouseEnter
///
[SRCategory(nameof(SR.CatMouse))]
[SRDescription(nameof(SR.ControlOnMouseLeaveDescr))]
- public event EventHandler MouseLeave
+ public event EventHandler? MouseLeave
{
add => Events.AddHandler(s_mouseLeaveEvent, value);
remove => Events.RemoveHandler(s_mouseLeaveEvent, value);
@@ -4393,7 +4394,7 @@ public event EventHandler MouseLeave
///
[SRCategory(nameof(SR.CatLayout))]
[SRDescription(nameof(SR.ControlOnDpiChangedBeforeParentDescr))]
- public event EventHandler DpiChangedBeforeParent
+ public event EventHandler? DpiChangedBeforeParent
{
add => Events.AddHandler(s_dpiChangedBeforeParentEvent, value);
remove => Events.RemoveHandler(s_dpiChangedBeforeParentEvent, value);
@@ -4406,7 +4407,7 @@ public event EventHandler DpiChangedBeforeParent
///
[SRCategory(nameof(SR.CatLayout))]
[SRDescription(nameof(SR.ControlOnDpiChangedAfterParentDescr))]
- public event EventHandler DpiChangedAfterParent
+ public event EventHandler? DpiChangedAfterParent
{
add => Events.AddHandler(s_dpiChangedAfterParentEvent, value);
remove => Events.RemoveHandler(s_dpiChangedAfterParentEvent, value);
@@ -4417,7 +4418,7 @@ public event EventHandler DpiChangedAfterParent
///
[SRCategory(nameof(SR.CatMouse))]
[SRDescription(nameof(SR.ControlOnMouseHoverDescr))]
- public event EventHandler MouseHover
+ public event EventHandler? MouseHover
{
add => Events.AddHandler(s_mouseHoverEvent, value);
remove => Events.RemoveHandler(s_mouseHoverEvent, value);
@@ -4428,7 +4429,7 @@ public event EventHandler MouseHover
///
[SRCategory(nameof(SR.CatMouse))]
[SRDescription(nameof(SR.ControlOnMouseMoveDescr))]
- public event MouseEventHandler MouseMove
+ public event MouseEventHandler? MouseMove
{
add => Events.AddHandler(s_mouseMoveEvent, value);
remove => Events.RemoveHandler(s_mouseMoveEvent, value);
@@ -4439,7 +4440,7 @@ public event MouseEventHandler MouseMove
///
[SRCategory(nameof(SR.CatMouse))]
[SRDescription(nameof(SR.ControlOnMouseUpDescr))]
- public event MouseEventHandler MouseUp
+ public event MouseEventHandler? MouseUp
{
add => Events.AddHandler(s_mouseUpEvent, value);
remove => Events.RemoveHandler(s_mouseUpEvent, value);
@@ -4452,7 +4453,7 @@ public event MouseEventHandler MouseUp
[SRDescription(nameof(SR.ControlOnMouseWheelDescr))]
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Advanced)]
- public event MouseEventHandler MouseWheel
+ public event MouseEventHandler? MouseWheel
{
add => Events.AddHandler(s_mouseWheelEvent, value);
remove => Events.RemoveHandler(s_mouseWheelEvent, value);
@@ -4463,7 +4464,7 @@ public event MouseEventHandler MouseWheel
///
[SRCategory(nameof(SR.CatLayout))]
[SRDescription(nameof(SR.ControlOnMoveDescr))]
- public event EventHandler Move
+ public event EventHandler? Move
{
add => Events.AddHandler(s_moveEvent, value);
remove => Events.RemoveHandler(s_moveEvent, value);
@@ -4474,7 +4475,7 @@ public event EventHandler Move
///
[SRCategory(nameof(SR.CatKey))]
[SRDescription(nameof(SR.PreviewKeyDownDescr))]
- public event PreviewKeyDownEventHandler PreviewKeyDown
+ public event PreviewKeyDownEventHandler? PreviewKeyDown
{
add => Events.AddHandler(s_previewKeyDownEvent, value);
remove => Events.RemoveHandler(s_previewKeyDownEvent, value);
@@ -4486,7 +4487,7 @@ public event PreviewKeyDownEventHandler PreviewKeyDown
[SRCategory(nameof(SR.CatLayout))]
[SRDescription(nameof(SR.ControlOnResizeDescr))]
[EditorBrowsable(EditorBrowsableState.Advanced)]
- public event EventHandler Resize
+ public event EventHandler? Resize
{
add => Events.AddHandler(s_resizeEvent, value);
remove => Events.RemoveHandler(s_resizeEvent, value);
@@ -4494,7 +4495,7 @@ public event EventHandler Resize
[SRCategory(nameof(SR.CatBehavior))]
[SRDescription(nameof(SR.ControlOnChangeUICuesDescr))]
- public event UICuesEventHandler ChangeUICues
+ public event UICuesEventHandler? ChangeUICues
{
add => Events.AddHandler(s_changeUICuesEvent, value);
remove => Events.RemoveHandler(s_changeUICuesEvent, value);
@@ -4502,7 +4503,7 @@ public event UICuesEventHandler ChangeUICues
[SRCategory(nameof(SR.CatBehavior))]
[SRDescription(nameof(SR.ControlOnStyleChangedDescr))]
- public event EventHandler StyleChanged
+ public event EventHandler? StyleChanged
{
add => Events.AddHandler(s_styleChangedEvent, value);
remove => Events.RemoveHandler(s_styleChangedEvent, value);
@@ -4510,7 +4511,7 @@ public event EventHandler StyleChanged
[SRCategory(nameof(SR.CatBehavior))]
[SRDescription(nameof(SR.ControlOnSystemColorsChangedDescr))]
- public event EventHandler SystemColorsChanged
+ public event EventHandler? SystemColorsChanged
{
add => Events.AddHandler(s_systemColorsChangedEvent, value);
remove => Events.RemoveHandler(s_systemColorsChangedEvent, value);
@@ -4521,7 +4522,7 @@ public event EventHandler SystemColorsChanged
///
[SRCategory(nameof(SR.CatFocus))]
[SRDescription(nameof(SR.ControlOnValidatingDescr))]
- public event CancelEventHandler Validating
+ public event CancelEventHandler? Validating
{
add => Events.AddHandler(s_validatingEvent, value);
remove => Events.RemoveHandler(s_validatingEvent, value);
@@ -4532,7 +4533,7 @@ public event CancelEventHandler Validating
///
[SRCategory(nameof(SR.CatFocus))]
[SRDescription(nameof(SR.ControlOnValidatedDescr))]
- public event EventHandler Validated
+ public event EventHandler? Validated
{
add => Events.AddHandler(s_validatedEvent, value);
remove => Events.RemoveHandler(s_validatedEvent, value);
@@ -4593,7 +4594,7 @@ private void ActiveXUpdateBounds(ref int x, ref int y, ref int width, ref int he
/// Assigns a new parent control. Sends out the appropriate property change
/// notifications for properties that are affected by the change of parent.
///
- internal virtual void AssignParent(Control value)
+ internal virtual void AssignParent(Control? value)
{
// Adopt the parent's required scaling bits
if (value is not null)
@@ -4662,7 +4663,6 @@ internal virtual void AssignParent(Control value)
// and invoking the property would just create the binding manager, which
// we don't need. We just blindly notify that the binding manager has
// changed, and if anyone cares, they will do the comparison at that time.
- //
OnBindingContextChanged(EventArgs.Empty);
}
}
@@ -4681,7 +4681,7 @@ internal virtual void AssignParent(Control value)
[SRCategory(nameof(SR.CatPropertyChanged))]
[SRDescription(nameof(SR.ControlOnParentChangedDescr))]
- public event EventHandler ParentChanged
+ public event EventHandler? ParentChanged
{
add => Events.AddHandler(s_parentEvent, value);
remove => Events.RemoveHandler(s_parentEvent, value);
@@ -4706,7 +4706,7 @@ public event EventHandler ParentChanged
///
[EditorBrowsable(EditorBrowsableState.Advanced)]
public IAsyncResult BeginInvoke(Action method) => BeginInvoke(method, null);
-
+#nullable disable
///
/// Executes the given delegate on the thread that owns this Control's
/// underlying window handle. The delegate is called asynchronously and this
@@ -13428,7 +13428,7 @@ PropertyStore IArrangedElement.Properties
// CAREFUL: This really calls SetBoundsCore, not SetBounds.
void IArrangedElement.SetBounds(Rectangle bounds, BoundsSpecified specified)
{
- ISite site = Site;
+ ISite? site = Site;
IComponentChangeService? changeService = null;
PropertyDescriptor? sizeProperty = null;
PropertyDescriptor? locationProperty = null;
@@ -14271,7 +14271,7 @@ bool IKeyboardToolTip.CanShowToolTipsNow()
bool IKeyboardToolTip.HasRtlModeEnabled()
{
- Control topLevelControl = TopLevelControlInternal;
+ Control? topLevelControl = TopLevelControlInternal;
return topLevelControl is not null && topLevelControl.RightToLeft == RightToLeft.Yes && !IsMirrored;
}
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/Form.cs b/src/System.Windows.Forms/src/System/Windows/Forms/Form.cs
index e5d0ab0c1cf..84cd32538f7 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/Form.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/Form.cs
@@ -2960,7 +2960,7 @@ private void ApplyClientSize()
/// Assigns a new parent control. Sends out the appropriate property change
/// notifications for properties that are affected by the change of parent.
///
- internal override void AssignParent(Control value)
+ internal override void AssignParent(Control? value)
{
// If we are being unparented from the MDI client control, remove
// formMDIParent as well.
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/GroupBox.cs b/src/System.Windows.Forms/src/System/Windows/Forms/GroupBox.cs
index 02112465270..5463060d342 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/GroupBox.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/GroupBox.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System.ComponentModel;
+using System.Diagnostics.CodeAnalysis;
using System.Drawing;
using System.Drawing.Text;
using System.Windows.Forms.Layout;
@@ -240,6 +241,7 @@ public FlatStyle FlatStyle
}
[Localizable(true)]
+ [AllowNull]
public override string Text
{
get => base.Text;
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/ListBox.cs b/src/System.Windows.Forms/src/System/Windows/Forms/ListBox.cs
index ec571e83e65..5920343b29b 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/ListBox.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/ListBox.cs
@@ -1088,7 +1088,8 @@ public bool Sorted
[EditorBrowsable(EditorBrowsableState.Advanced)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Bindable(false)]
- public override string? Text
+ [AllowNull]
+ public override string Text
{
get
{
@@ -1096,11 +1097,11 @@ public override string? Text
{
if (FormattingEnabled)
{
- return GetItemText(SelectedItem);
+ return GetItemText(SelectedItem) ?? string.Empty;
}
else
{
- return FilterItemOnProperty(SelectedItem)?.ToString();
+ return FilterItemOnProperty(SelectedItem)?.ToString() ?? string.Empty;
}
}
else
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/ListView.cs b/src/System.Windows.Forms/src/System/Windows/Forms/ListView.cs
index 29f3fccbb2d..6de0e46fd5b 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/ListView.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/ListView.cs
@@ -6,6 +6,7 @@
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
using System.Drawing;
using System.Drawing.Design;
using System.Globalization;
@@ -1649,6 +1650,7 @@ public ImageList? StateImageList
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
[Bindable(false)]
+ [AllowNull]
public override string Text
{
get => base.Text;
@@ -6131,7 +6133,7 @@ private unsafe bool WmNotify(ref Message m)
_columnHeaderClicked = null;
_columnHeaderClickedWidth = -1;
- ISite site = Site;
+ ISite? site = Site;
if (site is not null)
{
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/Printing/PrintPreviewControl.cs b/src/System.Windows.Forms/src/System/Windows/Forms/Printing/PrintPreviewControl.cs
index 74d4f9595fa..47426c0fa3a 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/Printing/PrintPreviewControl.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/Printing/PrintPreviewControl.cs
@@ -4,6 +4,7 @@
using System.ComponentModel;
using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
using System.Drawing;
using System.Drawing.Printing;
using static Interop;
@@ -208,6 +209,7 @@ public override RightToLeft RightToLeft
[EditorBrowsable(EditorBrowsableState.Never)]
[Bindable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+ [AllowNull]
public override string Text
{
get => base.Text;
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/ProgressBar.cs b/src/System.Windows.Forms/src/System/Windows/Forms/ProgressBar.cs
index 7e5c4abb204..a83df4509c8 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/ProgressBar.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/ProgressBar.cs
@@ -435,6 +435,7 @@ public int Step
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
[Bindable(false)]
+ [AllowNull]
public override string Text
{
get => base.Text;
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.cs b/src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.cs
index 5ec74a6113a..32689f41e19 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/ScrollBar.cs
@@ -327,6 +327,7 @@ public int SmallChange
[EditorBrowsable(EditorBrowsableState.Never)]
[Bindable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+ [AllowNull]
public override string Text
{
get => base.Text;
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/TabPage.cs b/src/System.Windows.Forms/src/System/Windows/Forms/TabPage.cs
index 7aaca785a4d..95ce7907976 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/TabPage.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/TabPage.cs
@@ -481,9 +481,9 @@ public string ToolTipText
/// Assigns a new parent control. Sends out the appropriate property change notifications for
/// properties that are affected by the change of parent.
///
- internal override void AssignParent(Control value)
+ internal override void AssignParent(Control? value)
{
- if (value is not null && !(value is TabControl))
+ if (value is not null && value is not TabControl)
{
throw new ArgumentException(string.Format(SR.TabControlTabPageNotOnTabControl, value.GetType().FullName));
}
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/TrackBar.cs b/src/System.Windows.Forms/src/System/Windows/Forms/TrackBar.cs
index 9d30c0c3391..51912b374f8 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/TrackBar.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/TrackBar.cs
@@ -492,6 +492,7 @@ public int SmallChange
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
[Bindable(false)]
+ [AllowNull]
public override string Text
{
get => base.Text;
diff --git a/src/System.Windows.Forms/tests/IntegrationTests/UIIntegrationTests/DesignBehaviorsTests.cs b/src/System.Windows.Forms/tests/IntegrationTests/UIIntegrationTests/DesignBehaviorsTests.cs
index e1ee700d63d..162d4cdd7fd 100644
--- a/src/System.Windows.Forms/tests/IntegrationTests/UIIntegrationTests/DesignBehaviorsTests.cs
+++ b/src/System.Windows.Forms/tests/IntegrationTests/UIIntegrationTests/DesignBehaviorsTests.cs
@@ -331,7 +331,7 @@ protected override void OnPaintAdornments(PaintEventArgs pe)
{
base.OnPaintAdornments(pe);
- pe.Graphics.DrawString($"Design time \n{Control.Site.Name} !", Control.Font, SystemBrushes.WindowText, new PointF(12, 12));
+ pe.Graphics.DrawString($"Design time \n{Control.Site?.Name} !", Control.Font, SystemBrushes.WindowText, new PointF(12, 12));
}
}
}