Export (0) Print
Expand All

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 Language Filter 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

Show:
© 2014 Microsoft