Skip to content

Value Editors and Value Editing Controls

gstaas edited this page Oct 17, 2014 · 2 revisions

Table of Contents

A value editor is typically associated with a value editing control that provides the user interface to display and edit a property's value. The type of control is appropriate for the data type of the property.

A value editing control is embedded in a complex property editing control, such as the GridControl or PropertyGrid controls that the GridPropertyEditor and PropertyEditor components are built on. These property editor controls ultimately rely on the PropertyView class, which is the abstract base class for complex property editing controls, providing formats, fonts, data binding, persistent settings, and category/property information. For more information on property editor containers, see Property Editor Components.

Some value editing controls contain a button ( or ) to display a dialog or drop down to get information. For example, clicking the button in the value editing control for FolderUriEditor displays a folder selection dialog. Similarly, the ColorEditor's value editing control drops down color swatches on tabs.

In addition, some value editing controls contain a button () next to the value description to set the value to its default value. This button displays only when the value is selected. Some of the value editing controls in the table show this button.

The value editing control is specified by the value editor — not the property descriptor. As noted in Value Editors, a value editor can specify the value editing control in two ways:

  • Implement the IPropertyEditor interface, whose GetEditingControl() method returns a value editing control object.
  • Derive from System.Drawing.Design.UITypeEditor and define an EditValue() method that creates a value editing control object, which gets the new value from the user and returns it.
Some value editors, such as BoundedIntEditor, do both of these. The value editing controls obtained in these two ways for a single value editor may be different, as they are for BoundedIntEditor.

Value Editors and Controls

The tables show the value editors and their associated controls in various categories. The "Type" column indicates whether the editor implements IPropertyEditor, derives from UITypeEditor, or both. Some editors listed have no controls associated with them.

Single Value Editors

Value Editor Value Editing
Control
Appearance Type Description
BoolEditor BoolControl
(private class)
IPropertyEditor Edit a Boolean value using a CheckBox. Used in several
samples, such as ATF FSM Editor Sample.
BoundedFloat-
Editor
BoundedFloat-
Control
IPropertyEditor
UITypeEditor
Edit a bounded float value. It displays a slider and
TextBox in the GUI. Used in ATF DOM Tree Editor Sample.
BoundedInt-
Editor
BoundedInt-
Control
IPropertyEditor
UITypeEditor
Edit a bounded int value. It displays a slider and TextBox
in the GUI. Used in ATF DOM Tree Editor Sample.
ColorEditor Uses control in
System.
Drawing.
Design.
ColorEditor.
EditValue()
UITypeEditor Derives from System.Drawing.Design.ColorEditor.
Edit color values. Clicking the button () drops down color
swatches on tabs to select another color. Used in
ATF Circuit Editor Sample and ATF Timeline Editor Sample.
ColorPicker-
Editor
ColorPicker
UITypeEditor Edit colors, derived from
System.Drawing.Design.ColorEditor. ColorPicker
is similar to ColorEditor's value editor, displaying a color
button and color components including alpha, shown in the top
figure. Clicking the button ( ) in the control displays an Adobe
color picker clone dialog, shown in the bottom figure. In addition,
the Sce.Atf.Controls.PropertyEditing.
ColorPickerEditor derived from this value editor allows
using color stored as an ARGB int. Used in
ATF DOM Property Editor Sample and ATF DOM Tree Editor Sample.
DateTime-
Editor
Uses control in System.
ComponentModel.
Design.
DateTimeEditor.
EditValue()
UITypeEditor Edit date and time values. Used in ATF DOM Tree Editor Sample.
EnumUIType-
Editor
ListBox UITypeEditor Handle dynamic enumerations, where display names are
associated with integer values. Used in several samples,
such as ATF Simple DOM Editor Sample.
FileUri-
Editor
OpenFileDialog UITypeEditor Use file open dialog box to allow the user to select a path
as a string or URI. Used by ATF DOM Tree Editor Sample
and in PropertyEditingCommands component.
FlagsUIType-
Editor
CheckedListBox UITypeEditor Handle dynamic flag enumerations, selecting as many flags
as desired in a list box. Used in ATF Timeline Editor Sample.
FolderBrowser-
Dialog-
UITypeEditor
FolderBrowser-
Dialog
UITypeEditor Select folder in folder browser dialog. Used in
ATF DOM Tree Editor Sample.
FolderUri-
Editor
FolderBrowser-
Dialog
UITypeEditor Select folder path (stored as string or URI). Used in
ATF DOM Tree Editor Sample.
LongEnum-
Editor
LongEnum-
Control-
Wrapper
(private class)
IPropertyEditor Edit long enum-like attributes and values with an autocomplete
ComboBox. The editor can also display images. The enum list can be updated programmatically.
Used in ATF DOM Tree Editor Sample.
NumericEditor NumericTextBox
(private class)
IPropertyEditor Text box for entering numeric values. Used in
ATF DOM Tree Editor Sample.

Multiple Value Editors

Value Editor Value Editing
Control
Appearance Type Description
ArrayEditor ArrayEditing-
Control
IPropertyEditor Edit the size, order, and values of an array whose elements are
numeric. Used in ATF DOM Tree Editor Sample.
Collection-
Editor
Collection-
Editing-
Control
IPropertyEditor Editor that provides collection editing controls. Entering text
selects the item with a matching first character. Used in
ATF DOM Tree Editor Sample.
NumericMatrix-
Editor
NumericMatrix-
Control
IPropertyEditor
UITypeEditor
Edit numeric matrices. Supports all numeric types except Decimal.
Can be used with the standard .NET PropertyGrid, DataGrid,
and DataGridView, as well as ATF's GridControl and
PropertyGrid controls that the GridPropertyEditor and
PropertyEditor components are built on. Used in
ATF DOM Tree Editor Sample.
NumericTuple-
Editor
NumericTuple-
Control
IPropertyEditor
UITypeEditor
Edit a numeric tuple (vector) of arbitrary dimensions. All numeric
types except Decimal are supported. Can be used with the
standard .NET PropertyGrid, DataGrid, and DataGridView,
as well as ATF's GridControl and PropertyGrid controls that
the GridPropertyEditor and PropertyEditor components
are built on. Used in ATF DOM Tree Editor Sample.
UniformArray-
Editor
UniformArray-
TextBox
IPropertyEditor Edit an array (of arbitrary length) of identical numeric values of the
same type; the control displays only the single value. Used in
ATF DOM Tree Editor Sample.

Special Purpose

Value Editor Value Editing
Control
Appearance Type Description
Embedded-
Collection-
Editor
Collection-
Control
IPropertyEditor Embedded property editor for adding, removing, and editing items in a
collection. Supports multiple item inserter functions, allowing you to
insert child items of various types (typically derived from a common
base class). Used in ATF DOM Property Editor Sample. For a discussion
and illustration of this editor in the sample, see
EmbeddedCollectionEditor Class.
Nested-
Collection-
Editor
Nested-
Collection-
EditorForm
UITypeEditor Nested collections editor form. Used in ATF Tree List Editor Sample.

WPF

Value Editor Value Editing
Control
Appearance Type Description
MultiLine-
TextValue-
Editor
None Class for editing a value with a multi-line TextBox and a SliderValueEditor.
SliderValue-
Editor
None Class for editing a value with a slider control.
ValueEditor None Base class for editing a value with a control. MultiLineTextValueEditor and
SliderValueEditor derive from it.

Other Value Editing Controls

These controls are not used directly with value editors.

Value Editing Control Description
PropertyEditingControl Universal property editing control that can be embedded in complex property editing controls. It uses TypeConverter and UITypeEditor objects to provide a GUI for every kind of .NET property. It gets used by default if no custom value editing control is provided.
BoolInputControl Edit a Boolean value.

Topics in this section

Clone this wiki locally