UpDownBase Class
Implements the basic functionality required by an up-down control.
For a list of all members of this type, see UpDownBase Members.
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Control
System.Windows.Forms.ScrollableControl
System.Windows.Forms.ContainerControl
System.Windows.Forms.UpDownBase
System.Windows.Forms.DomainUpDown
System.Windows.Forms.NumericUpDown
[Visual Basic] MustInherit Public Class UpDownBase Inherits ContainerControl [C#] public abstract class UpDownBase : ContainerControl [C++] public __gc __abstract class UpDownBase : public ContainerControl [JScript] public abstract class UpDownBase extends ContainerControl
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Remarks
The up-down control consists of a text box and a small vertical scroll bar, commonly referred to as a spinner control. The UpDownBase class links the two controls and allows the user to change the display in the text box by clicking the up or down buttons or by entering the appropriate type of value directly into the text box. Use the up-down control in cases where you want to limit the list of values a user can select, similar to a list box or combo box. Depending upon the type of list you want to display, the advantage to using an up-down control is that it allows you to quickly set a range of valid values, rather than adding items one at a time. Implementing an up-down control requires less data validation than a text box, as you can limit the data type when you derive a class from UpDownBase. An example of this is the NumericUpDown class, which limits the values to the numeric type and uses a Minimum and Maximum property to validate the data.
To allow the user to use the arrow keys to change the contents of the up-down control, set the InterceptArrowKeys property to true. To restrict the user to values you specify, set the ReadOnly property to true. To control the alignment of text in the up-down control, set the TextAlign property. To set the alignment of the up and down buttons in relation to the text box portion of the control, set the UpDownAlign property to either LeftRightAlignment.Left or LeftRightAlignment.Right.
The UpButton and DownButton methods, when overridden, handle the clicking of the up or down buttons. When overridden, the methods ValidateEditText and UpdateEditText validate the value (either selected or entered) and update the text displayed in the up-down control. If the value fails validation, use the Select method to select the invalid text. This allows the user to quickly correct the text by simply typing in a new value without having to manually select or delete the existing text.
Notes to Inheritors: When you inherit from UpDownBase, you must override the following members: DownButton, UpButton, UpdateEditText, ValidateEditText.
Example
[Visual Basic, C#, C++] The following example uses the derived class, NumericUpDown, and sets some of its properties derived from UpDownBase. This code assumes you have a NumericUpDown control, two ComboBox controls, and three CheckBox controls created on a form. Label the ComboBox controls: BorderStyle and TextAlign. Label the CheckBox controls: InterceptArrowKeys, ReadOnly, and UpDownAlign - Left. The code allows you to change the property values at run time and see how each affects the appearance and behavior of the up-down control. Add the following items to the combo box labled BorderStyle: None, Fixed3D, and FixedSingle items. Add the following items to the combo box labled TextAlign: Left, Right, and Center items.
[Visual Basic] Private Sub comboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) ' Set the BorderStyle property. Select Case comboBox1.Text Case "Fixed3D" numericUpDown1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D Case "None" numericUpDown1.BorderStyle = System.Windows.Forms.BorderStyle.None Case "FixedSingle" numericUpDown1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle End Select End Sub Private Sub comboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) ' Set the TextAlign property. Select Case comboBox2.Text Case "Right" numericUpDown1.TextAlign = HorizontalAlignment.Right Case "Left" numericUpDown1.TextAlign = HorizontalAlignment.Left Case "Center" numericUpDown1.TextAlign = HorizontalAlignment.Center End Select End Sub Private Sub checkBox1_Click(sender As Object, e As EventArgs) ' Evaluate and toggle the ReadOnly property. If numericUpDown1.ReadOnly Then numericUpDown1.ReadOnly = False Else numericUpDown1.ReadOnly = True End If End Sub Private Sub checkBox2_Click(sender As Object, e As EventArgs) ' Evaluate and toggle the InterceptArrowKeys property. If numericUpDown1.InterceptArrowKeys Then numericUpDown1.InterceptArrowKeys = False Else numericUpDown1.InterceptArrowKeys = True End If End Sub Private Sub checkBox3_Click(sender As Object, e As EventArgs) ' Evaluate and toggle the UpDownAlign property. If numericUpDown1.UpDownAlign = LeftRightAlignment.Left Then numericUpDown1.UpDownAlign = LeftRightAlignment.Right Else numericUpDown1.UpDownAlign = LeftRightAlignment.Left End If End Sub [C#] private void comboBox1_SelectedIndexChanged(Object sender, EventArgs e) { // Set the BorderStyle property. switch(comboBox1.Text) { case "Fixed3D": numericUpDown1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; break; case "None": numericUpDown1.BorderStyle = System.Windows.Forms.BorderStyle.None; break; case "FixedSingle": numericUpDown1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; break; } } private void comboBox2_SelectedIndexChanged(Object sender, EventArgs e) { // Set the TextAlign property. switch (comboBox2.Text) { case "Right": numericUpDown1.TextAlign = HorizontalAlignment.Right; break; case "Left": numericUpDown1.TextAlign = HorizontalAlignment.Left; break; case "Center": numericUpDown1.TextAlign = HorizontalAlignment.Center; break; } } private void checkBox1_Click(Object sender, EventArgs e) { // Evaluate and toggle the ReadOnly property. if (numericUpDown1.ReadOnly) { numericUpDown1.ReadOnly = false; } else { numericUpDown1.ReadOnly = true; } } private void checkBox2_Click(Object sender, EventArgs e) { // Evaluate and toggle the InterceptArrowKeys property. if (numericUpDown1.InterceptArrowKeys) { numericUpDown1.InterceptArrowKeys = false; } else { numericUpDown1.InterceptArrowKeys = true; } } private void checkBox3_Click(Object sender, EventArgs e) { // Evaluate and toggle the UpDownAlign property. if (numericUpDown1.UpDownAlign == LeftRightAlignment.Left) { numericUpDown1.UpDownAlign = LeftRightAlignment.Right; } else { numericUpDown1.UpDownAlign = LeftRightAlignment.Left; } } [C++] private: void comboBox1_SelectedIndexChanged(Object *sender, EventArgs *e) { // Set the BorderStyle property. if (!String::Compare(comboBox1->Text, S"Fixed3D")) { numericUpDown1->BorderStyle = System::Windows::Forms::BorderStyle::Fixed3D; } else if (!String::Compare(comboBox1->Text, S"None")) { numericUpDown1->BorderStyle = System::Windows::Forms::BorderStyle::None; } else if (!String::Compare(comboBox1->Text, S"FixedSingle")) { numericUpDown1->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle; } }; void comboBox2_SelectedIndexChanged(Object *sender, EventArgs *e) { // Set the TextAlign property. if (!String::Compare(comboBox2->Text, S"Right")) { numericUpDown1->TextAlign = HorizontalAlignment::Right; } else if (!String::Compare(comboBox1->Text, S"Left")) { numericUpDown1->TextAlign = HorizontalAlignment::Left; } else if (!String::Compare(comboBox1->Text, S"Center")) { numericUpDown1->TextAlign = HorizontalAlignment::Center; } }; void checkBox1_Click(Object *sender, EventArgs *e) { // Evaluate and toggle the ReadOnly property. if (numericUpDown1->ReadOnly) { numericUpDown1->ReadOnly = false; } else { numericUpDown1->ReadOnly = true; } }; void checkBox2_Click(Object *sender, EventArgs *e) { // Evaluate and toggle the InterceptArrowKeys property. if (numericUpDown1->InterceptArrowKeys) { numericUpDown1->InterceptArrowKeys = false; } else { numericUpDown1->InterceptArrowKeys = true; } }; void checkBox3_Click(Object *sender, EventArgs *e) { // Evaluate and toggle the UpDownAlign property. if (numericUpDown1->UpDownAlign == LeftRightAlignment::Left) { numericUpDown1->UpDownAlign = LeftRightAlignment::Right; } else { numericUpDown1->UpDownAlign = LeftRightAlignment::Left; } };
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Namespace: System.Windows.Forms
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework
Assembly: System.Windows.Forms (in System.Windows.Forms.dll)
See Also
UpDownBase Members | System.Windows.Forms Namespace | NumericUpDown | DomainUpDown