|Ring||A ring control is a numeric input that presents a set of choices associated with numeric values.|
|Enumerated type, or Enum||The enum control is an object that presents a set of choices associated with an enumerated data type. The enumerated data type consists of a set of named constants.|
|Combo Box||The combo box control is an object that presents a list of names associated with string values. Users may select from items in a predefined list or enter new values directly, at edit time or run time.|
|Control||When to Use||Examples: E-Commerce Application|
Use a ring when you want to provide a list of choices that represent numeric values. The ring control is a numeric input that allows the user to choose from a list of meaningful, human-readable values instead of numeric values.
If the logic of your program prefers numeric values to string values, use a ring.
You want to present the user with a list of product names, each of which corresponds to a unique product number. You can specify the products' numbers as their respective numeric values. You can then cross-reference those numeric values to find the prices of the items.
|Enumerated type, or Enum||
Use an enum when you want to provide a list of choices associated with an enumerated data type.
If you want your program to deal with a fixed set of constants instead of arbitrary numeric data, use an enum.
You want to present the user with a list of shipping speed options for the item they want to order. The numeric values assigned to each of the options are automatically defined. You cannot edit the numeric values.
You can use the enumerated data type in the enum control to drive the logic of your program. For example, because the names of the choices are part of the data type, you can use them to populate the cases of a Case Structure. This ensures that only valid states are used in your program.
Use a combo box when you want to provide a list of items for users to cycle through while also providing the option to type new values into the menu at edit time or run time.
If the logic of your program requires string values rather than numeric values, use a combo box.
You want to present the user with a list of previous shipping addresses, while also allowing them to enter a new shipping address for this purchase.
Unlike the strings listed in rings and enums, the strings listed in a combo box have no numeric representation. Additionally, enums require these numeric values to be sequential, unsigned integer values, while rings allow for much more freedom in assigning a numeric value.