# Object Design

This class diagram shows the main relationships between the most commonly used classes:

General class diagram

# PropertyGrid

Class dragged onto a form to instantiate a PropertyGrid. It contains an optional toolbar, the actual grid, and an optional comments area.

# InternalGrid

Internal control handling the true two-columns grid. You never directly interact with this class. It contains a collection of Properties.

# Property

One row in the grid. You usually use an enumerator to access this. It keeps a reference on a value.

# PropertyValue

Class handling the value of the .Net property. Several internal types of values exist. These handle:

  • Properties represented by PropertyDescriptor classes (found by reflection using SelectedObject(s) or AppendProperty-like methods).
  • Properties simulated by a TypeConverter.
  • Virtual Properties (added using AppendManagedProperty).

# PropertyLook

Handles custom painting for a Property.

# PropertyFeel

Each kind of PropertyFeel (derived class) is a singleton that handles one kind of particular inplace control.

# IInPlaceControl

Interface used by each kind of inplace control, which is above all a derived class of the WinForms Control class.

# PropertyValidatorBase

Base class used by all validator classes, i.e. classes checking a user-entered value is correct.

# PropertyEnumerator

Class that encapsulates a reference to a Property instance. An enumerator can be stored and used to navigate the collection of Properties.

  • PropertyDeepEnumerator: a bidirectional enumerator, this browses all Properties, including the hidden ones, in display order.
  • PropertySiblingEnumerator: a bidirectional enumerator, this browses a parent's direct children, including the hidden ones. It only browses one level.
  • PropertyVisibleDeepEnumerator: as PropertyDeepEnumerator, except ignores hidden Properties.
  • PropertyVisibleSiblingEnumerator: as PropertySibilingEnumerator, except ignores hidden Properties.

# CustomDrawManager

Base class used to modify the global appearance of the PropertyGrid.

Last Updated: 5/25/2022, 1:18:09 PM