diff --git a/src/System.Windows.Forms/src/PublicAPI.Shipped.txt b/src/System.Windows.Forms/src/PublicAPI.Shipped.txt
index 9ecc7bf368f..10ad965cca3 100644
--- a/src/System.Windows.Forms/src/PublicAPI.Shipped.txt
+++ b/src/System.Windows.Forms/src/PublicAPI.Shipped.txt
@@ -241,10 +241,10 @@ override System.Windows.Forms.PropertyGrid.BackgroundImage.set -> void
~override System.Windows.Forms.PropertyGrid.OnResize(System.EventArgs e) -> void
~override System.Windows.Forms.PropertyGrid.OnSystemColorsChanged(System.EventArgs e) -> void
~override System.Windows.Forms.PropertyGrid.OnVisibleChanged(System.EventArgs e) -> void
-~override System.Windows.Forms.PropertyGrid.Site.get -> System.ComponentModel.ISite
-~override System.Windows.Forms.PropertyGrid.Site.set -> void
-~override System.Windows.Forms.PropertyGrid.Text.get -> string
-~override System.Windows.Forms.PropertyGrid.Text.set -> void
+override System.Windows.Forms.PropertyGrid.Site.get -> System.ComponentModel.ISite?
+override System.Windows.Forms.PropertyGrid.Site.set -> void
+override System.Windows.Forms.PropertyGrid.Text.get -> string!
+override System.Windows.Forms.PropertyGrid.Text.set -> void
override System.Windows.Forms.TreeNode.ToString() -> string!
override System.Windows.Forms.TreeView.BackgroundImage.get -> System.Drawing.Image?
override System.Windows.Forms.TreeView.BackgroundImage.set -> void
@@ -570,16 +570,16 @@ System.Windows.Forms.PropertyGrid.BrowsableAttributes.set -> void
System.Windows.Forms.PropertyGrid.Controls.get -> System.Windows.Forms.Control.ControlCollection!
~System.Windows.Forms.PropertyGrid.OnComComponentNameChanged(System.ComponentModel.Design.ComponentRenameEventArgs e) -> void
~System.Windows.Forms.PropertyGrid.OnNotifyPropertyValueUIItemsChanged(object sender, System.EventArgs e) -> void
-~System.Windows.Forms.PropertyGrid.PropertyTabs.get -> System.Windows.Forms.PropertyGrid.PropertyTabCollection
-~System.Windows.Forms.PropertyGrid.SelectedGridItem.get -> System.Windows.Forms.GridItem
-~System.Windows.Forms.PropertyGrid.SelectedGridItem.set -> void
-~System.Windows.Forms.PropertyGrid.SelectedObject.get -> object
-~System.Windows.Forms.PropertyGrid.SelectedObject.set -> void
-~System.Windows.Forms.PropertyGrid.SelectedObjects.get -> object[]
-~System.Windows.Forms.PropertyGrid.SelectedObjects.set -> void
-~System.Windows.Forms.PropertyGrid.SelectedTab.get -> System.Windows.Forms.Design.PropertyTab
-~System.Windows.Forms.PropertyGrid.ToolStripRenderer.get -> System.Windows.Forms.ToolStripRenderer
-~System.Windows.Forms.PropertyGrid.ToolStripRenderer.set -> void
+System.Windows.Forms.PropertyGrid.PropertyTabs.get -> System.Windows.Forms.PropertyGrid.PropertyTabCollection!
+System.Windows.Forms.PropertyGrid.SelectedGridItem.get -> System.Windows.Forms.GridItem?
+System.Windows.Forms.PropertyGrid.SelectedGridItem.set -> void
+System.Windows.Forms.PropertyGrid.SelectedObject.get -> object?
+System.Windows.Forms.PropertyGrid.SelectedObject.set -> void
+System.Windows.Forms.PropertyGrid.SelectedObjects.get -> object![]!
+System.Windows.Forms.PropertyGrid.SelectedObjects.set -> void
+System.Windows.Forms.PropertyGrid.SelectedTab.get -> System.Windows.Forms.Design.PropertyTab!
+System.Windows.Forms.PropertyGrid.ToolStripRenderer.get -> System.Windows.Forms.ToolStripRenderer?
+System.Windows.Forms.PropertyGrid.ToolStripRenderer.set -> void
System.Windows.Forms.TreeNode.FirstNode.get -> System.Windows.Forms.TreeNode?
System.Windows.Forms.TreeNode.FullPath.get -> string!
System.Windows.Forms.TreeNode.ImageKey.get -> string!
@@ -9076,33 +9076,33 @@ System.Windows.Forms.PropertyGrid.DisabledItemForeColor.set -> void
System.Windows.Forms.PropertyGrid.DrawFlatToolbar.get -> bool
System.Windows.Forms.PropertyGrid.DrawFlatToolbar.set -> void
System.Windows.Forms.PropertyGrid.ExpandAllGridItems() -> void
-System.Windows.Forms.PropertyGrid.ForeColorChanged -> System.EventHandler
+System.Windows.Forms.PropertyGrid.ForeColorChanged -> System.EventHandler?
System.Windows.Forms.PropertyGrid.HelpBackColor.get -> System.Drawing.Color
System.Windows.Forms.PropertyGrid.HelpBackColor.set -> void
System.Windows.Forms.PropertyGrid.HelpBorderColor.get -> System.Drawing.Color
System.Windows.Forms.PropertyGrid.HelpBorderColor.set -> void
System.Windows.Forms.PropertyGrid.HelpForeColor.get -> System.Drawing.Color
System.Windows.Forms.PropertyGrid.HelpForeColor.set -> void
-System.Windows.Forms.PropertyGrid.KeyDown -> System.Windows.Forms.KeyEventHandler
-System.Windows.Forms.PropertyGrid.KeyPress -> System.Windows.Forms.KeyPressEventHandler
-System.Windows.Forms.PropertyGrid.KeyUp -> System.Windows.Forms.KeyEventHandler
+System.Windows.Forms.PropertyGrid.KeyDown -> System.Windows.Forms.KeyEventHandler?
+System.Windows.Forms.PropertyGrid.KeyPress -> System.Windows.Forms.KeyPressEventHandler?
+System.Windows.Forms.PropertyGrid.KeyUp -> System.Windows.Forms.KeyEventHandler?
System.Windows.Forms.PropertyGrid.LargeButtons.get -> bool
System.Windows.Forms.PropertyGrid.LargeButtons.set -> void
System.Windows.Forms.PropertyGrid.LineColor.get -> System.Drawing.Color
System.Windows.Forms.PropertyGrid.LineColor.set -> void
-System.Windows.Forms.PropertyGrid.MouseDown -> System.Windows.Forms.MouseEventHandler
-System.Windows.Forms.PropertyGrid.MouseEnter -> System.EventHandler
-System.Windows.Forms.PropertyGrid.MouseLeave -> System.EventHandler
-System.Windows.Forms.PropertyGrid.MouseMove -> System.Windows.Forms.MouseEventHandler
-System.Windows.Forms.PropertyGrid.MouseUp -> System.Windows.Forms.MouseEventHandler
+System.Windows.Forms.PropertyGrid.MouseDown -> System.Windows.Forms.MouseEventHandler?
+System.Windows.Forms.PropertyGrid.MouseEnter -> System.EventHandler?
+System.Windows.Forms.PropertyGrid.MouseLeave -> System.EventHandler?
+System.Windows.Forms.PropertyGrid.MouseMove -> System.Windows.Forms.MouseEventHandler?
+System.Windows.Forms.PropertyGrid.MouseUp -> System.Windows.Forms.MouseEventHandler?
System.Windows.Forms.PropertyGrid.Padding.get -> System.Windows.Forms.Padding
System.Windows.Forms.PropertyGrid.Padding.set -> void
-System.Windows.Forms.PropertyGrid.PaddingChanged -> System.EventHandler
+System.Windows.Forms.PropertyGrid.PaddingChanged -> System.EventHandler?
System.Windows.Forms.PropertyGrid.PropertyGrid() -> void
System.Windows.Forms.PropertyGrid.PropertySort.get -> System.Windows.Forms.PropertySort
System.Windows.Forms.PropertyGrid.PropertySort.set -> void
-System.Windows.Forms.PropertyGrid.PropertySortChanged -> System.EventHandler
-System.Windows.Forms.PropertyGrid.PropertyTabChanged -> System.Windows.Forms.PropertyTabChangedEventHandler
+System.Windows.Forms.PropertyGrid.PropertySortChanged -> System.EventHandler?
+System.Windows.Forms.PropertyGrid.PropertyTabChanged -> System.Windows.Forms.PropertyTabChangedEventHandler?
System.Windows.Forms.PropertyGrid.PropertyTabCollection
System.Windows.Forms.PropertyGrid.PropertyTabCollection.AddTabType(System.Type! propertyTabType) -> void
System.Windows.Forms.PropertyGrid.PropertyTabCollection.AddTabType(System.Type! propertyTabType, System.ComponentModel.PropertyTabScope tabScope) -> void
@@ -9111,17 +9111,17 @@ System.Windows.Forms.PropertyGrid.PropertyTabCollection.Count.get -> int
System.Windows.Forms.PropertyGrid.PropertyTabCollection.GetEnumerator() -> System.Collections.IEnumerator!
System.Windows.Forms.PropertyGrid.PropertyTabCollection.RemoveTabType(System.Type! propertyTabType) -> void
System.Windows.Forms.PropertyGrid.PropertyTabCollection.this[int index].get -> System.Windows.Forms.Design.PropertyTab!
-System.Windows.Forms.PropertyGrid.PropertyValueChanged -> System.Windows.Forms.PropertyValueChangedEventHandler
+System.Windows.Forms.PropertyGrid.PropertyValueChanged -> System.Windows.Forms.PropertyValueChangedEventHandler?
System.Windows.Forms.PropertyGrid.RefreshTabs(System.ComponentModel.PropertyTabScope tabScope) -> void
System.Windows.Forms.PropertyGrid.ResetSelectedProperty() -> void
-System.Windows.Forms.PropertyGrid.SelectedGridItemChanged -> System.Windows.Forms.SelectedGridItemChangedEventHandler
+System.Windows.Forms.PropertyGrid.SelectedGridItemChanged -> System.Windows.Forms.SelectedGridItemChangedEventHandler?
System.Windows.Forms.PropertyGrid.SelectedItemWithFocusBackColor.get -> System.Drawing.Color
System.Windows.Forms.PropertyGrid.SelectedItemWithFocusBackColor.set -> void
System.Windows.Forms.PropertyGrid.SelectedItemWithFocusForeColor.get -> System.Drawing.Color
System.Windows.Forms.PropertyGrid.SelectedItemWithFocusForeColor.set -> void
-System.Windows.Forms.PropertyGrid.SelectedObjectsChanged -> System.EventHandler
+System.Windows.Forms.PropertyGrid.SelectedObjectsChanged -> System.EventHandler?
System.Windows.Forms.PropertyGrid.ShowEventsButton(bool value) -> void
-System.Windows.Forms.PropertyGrid.TextChanged -> System.EventHandler
+System.Windows.Forms.PropertyGrid.TextChanged -> System.EventHandler?
System.Windows.Forms.PropertyGrid.UseCompatibleTextRendering.get -> bool
System.Windows.Forms.PropertyGrid.UseCompatibleTextRendering.set -> void
System.Windows.Forms.PropertyGrid.ViewBackColor.get -> System.Drawing.Color
diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/Controls/PropertyGrid/PropertyGrid.cs b/src/System.Windows.Forms/src/System/Windows/Forms/Controls/PropertyGrid/PropertyGrid.cs
index 477d08d27ab..5a3554b2574 100644
--- a/src/System.Windows.Forms/src/System/Windows/Forms/Controls/PropertyGrid/PropertyGrid.cs
+++ b/src/System.Windows.Forms/src/System/Windows/Forms/Controls/PropertyGrid/PropertyGrid.cs
@@ -554,7 +554,7 @@ public virtual bool CommandsVisibleIfAvailable
[EditorBrowsable(EditorBrowsableState.Advanced)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
protected virtual Type DefaultTabType => typeof(PropertiesTab);
-#nullable disable
+
///
/// Gets or sets a value indicating whether the control paints its toolbar
/// with flat buttons.
@@ -584,7 +584,7 @@ public override Color ForeColor
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
- public new event EventHandler ForeColorChanged
+ public new event EventHandler? ForeColorChanged
{
add => base.ForeColorChanged += value;
remove => base.ForeColorChanged -= value;
@@ -819,7 +819,7 @@ public Color LineColor
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
- public new event EventHandler PaddingChanged
+ public new event EventHandler? PaddingChanged
{
add => base.PaddingChanged += value;
remove => base.PaddingChanged -= value;
@@ -843,18 +843,18 @@ public PropertySort PropertySort
if ((value & PropertySort.Categorized) != 0)
{
- newButton = _viewSortButtons[CategorySortButtonIndex];
+ newButton = _viewSortButtons![CategorySortButtonIndex];
}
else if ((value & PropertySort.Alphabetical) != 0)
{
- newButton = _viewSortButtons[AlphaSortButtonIndex];
+ newButton = _viewSortButtons![AlphaSortButtonIndex];
}
else
{
- newButton = _viewSortButtons[NoSortButtonIndex];
+ newButton = _viewSortButtons![NoSortButtonIndex];
}
- GridItem selectedGridItem = SelectedGridItem;
+ GridItem? selectedGridItem = SelectedGridItem;
OnViewSortButtonClick(newButton, EventArgs.Empty);
@@ -890,7 +890,7 @@ public PropertySort PropertySort
[SRDescription(nameof(SR.PropertyGridSelectedObjectDesc))]
[SRCategory(nameof(SR.CatBehavior))]
[TypeConverter(typeof(SelectedObjectConverter))]
- public object SelectedObject
+ public object? SelectedObject
{
get => _selectedObjects is null || _selectedObjects.Length == 0 ? null : _selectedObjects[0];
set => SelectedObjects = value is null ? Array.Empty
[SRCategory(nameof(SR.CatPropertyChanged))]
[SRDescription(nameof(SR.PropertyGridPropertyValueChangedDescr))]
- public event PropertyValueChangedEventHandler PropertyValueChanged
+ public event PropertyValueChangedEventHandler? PropertyValueChanged
{
add => Events.AddHandler(s_propertyValueChangedEvent, value);
remove => Events.RemoveHandler(s_propertyValueChangedEvent, value);
}
- event ComponentRenameEventHandler IComPropertyBrowser.ComComponentNameChanged
+ event ComponentRenameEventHandler? IComPropertyBrowser.ComComponentNameChanged
{
add => Events.AddHandler(s_comComponentNameChangedEvent, value);
remove => Events.RemoveHandler(s_comComponentNameChangedEvent, value);
@@ -1419,7 +1423,7 @@ event ComponentRenameEventHandler IComPropertyBrowser.ComComponentNameChanged
///
[SRCategory(nameof(SR.CatPropertyChanged))]
[SRDescription(nameof(SR.PropertyGridPropertyTabchangedDescr))]
- public event PropertyTabChangedEventHandler PropertyTabChanged
+ public event PropertyTabChangedEventHandler? PropertyTabChanged
{
add => Events.AddHandler(s_propertyTabChangedEvent, value);
remove => Events.RemoveHandler(s_propertyTabChangedEvent, value);
@@ -1430,7 +1434,7 @@ public event PropertyTabChangedEventHandler PropertyTabChanged
///
[SRCategory(nameof(SR.CatPropertyChanged))]
[SRDescription(nameof(SR.PropertyGridPropertySortChangedDescr))]
- public event EventHandler PropertySortChanged
+ public event EventHandler? PropertySortChanged
{
add => Events.AddHandler(s_propertySortChangedEvent, value);
remove => Events.RemoveHandler(s_propertySortChangedEvent, value);
@@ -1441,7 +1445,7 @@ public event EventHandler PropertySortChanged
///
[SRCategory(nameof(SR.CatPropertyChanged))]
[SRDescription(nameof(SR.PropertyGridSelectedGridItemChangedDescr))]
- public event SelectedGridItemChangedEventHandler SelectedGridItemChanged
+ public event SelectedGridItemChangedEventHandler? SelectedGridItemChanged
{
add => Events.AddHandler(s_selectedGridItemChangedEvent, value);
remove => Events.RemoveHandler(s_selectedGridItemChangedEvent, value);
@@ -1449,15 +1453,19 @@ public event SelectedGridItemChangedEventHandler SelectedGridItemChanged
[SRCategory(nameof(SR.CatPropertyChanged))]
[SRDescription(nameof(SR.PropertyGridSelectedObjectsChangedDescr))]
- public event EventHandler SelectedObjectsChanged
+ public event EventHandler? SelectedObjectsChanged
{
add => Events.AddHandler(s_selectedObjectsChangedEvent, value);
remove => Events.RemoveHandler(s_selectedObjectsChangedEvent, value);
}
- internal void AddTab(Type tabType, PropertyTabScope scope, object @object = null, bool setupToolbar = true)
+ internal void AddTab(
+ Type tabType,
+ PropertyTabScope scope,
+ object? @object = null,
+ bool setupToolbar = true)
{
- PropertyTab tab = null;
+ PropertyTab? tab = null;
int tabIndex = -1;
// Check to see if we've already got a tab of this type.
@@ -1476,7 +1484,7 @@ internal void AddTab(Type tabType, PropertyTabScope scope, object @object = null
{
// The tabs need service providers. The one we hold onto is not good enough,
// so try to get the one off of the component's site.
- IDesignerHost host = null;
+ IDesignerHost? host = null;
if (@object is IComponent component && component.Site is ISite site)
{
host = site.GetService();
@@ -1536,11 +1544,11 @@ internal void AddTab(Type tabType, PropertyTabScope scope, object @object = null
{
try
{
- object[] tabComponents = tab.Components;
+ object[]? tabComponents = tab.Components;
int oldArraySize = tabComponents is null ? 0 : tabComponents.Length;
object[] newComponents = new object[oldArraySize + 1];
- if (oldArraySize > 0)
+ if (tabComponents is not null)
{
Array.Copy(tabComponents, newComponents, oldArraySize);
}
@@ -1561,7 +1569,7 @@ internal void AddTab(Type tabType, PropertyTabScope scope, object @object = null
ShowEventsButton(false);
}
}
-
+#nullable disable
/// Collapses all the nodes in the PropertyGrid
public void CollapseAllGridItems()
=> _gridView.RecursivelyExpand(_rootEntry, initialize: false, expand: false, maxExpands: -1);
diff --git a/src/System.Windows.Forms/tests/TestUtilities/PropertyGridInternal/SubPropertyGrid.cs b/src/System.Windows.Forms/tests/TestUtilities/PropertyGridInternal/SubPropertyGrid.cs
index 710d6c51c48..304b631f35b 100644
--- a/src/System.Windows.Forms/tests/TestUtilities/PropertyGridInternal/SubPropertyGrid.cs
+++ b/src/System.Windows.Forms/tests/TestUtilities/PropertyGridInternal/SubPropertyGrid.cs
@@ -4,6 +4,7 @@
#nullable enable
using System.ComponentModel;
+using System.Diagnostics.CodeAnalysis;
using System.Reflection;
using System.Runtime.ExceptionServices;
using System.Runtime.InteropServices;
@@ -17,6 +18,7 @@ namespace System.Windows.Forms.PropertyGridInternal.TestUtilities;
internal PropertyGridView GridView => this.TestAccessor().Dynamic._gridView;
+ [DisallowNull]
internal GridEntry? SelectedEntry
{
get => GridView.SelectedGridEntry;
@@ -27,7 +29,7 @@ internal GridEntry this[string propertyName]
{
get
{
- string categoryName = SelectedObject.GetType().GetProperty(propertyName)!
+ string categoryName = SelectedObject!.GetType().GetProperty(propertyName)!
.GetCustomAttribute()!.Category;
return GetCurrentEntries()
.Single(entry => entry.PropertyName == categoryName)
@@ -79,7 +81,7 @@ public void PopupEditorAndClose(Action? onClosingAction = null)
protected override void Dispose(bool disposing)
{
- object selectedObject = SelectedObject;
+ object? selectedObject = SelectedObject;
base.Dispose(disposing);