UpDownBase (Clase) (System.Windows.Forms)

Cambiar vista:
Sin script
Biblioteca de clases de .NET Framework
UpDownBase (Clase)

Actualización: noviembre 2007

Implementa la funcionalidad básica requerida por un cuadro de número (también conocido como un control de flechas).

Espacio de nombres:  System.Windows.Forms
Ensamblado:  System.Windows.Forms (en System.Windows.Forms.dll)
Sintaxis

Visual Basic (Declaración)
<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _
<ComVisibleAttribute(True)> _
Public MustInherit Class UpDownBase _
	Inherits ContainerControl
Visual Basic (Uso)
Dim instance As UpDownBase
C#
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]
[ComVisibleAttribute(true)]
public abstract class UpDownBase : ContainerControl
Visual C++
[ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)]
[ComVisibleAttribute(true)]
public ref class UpDownBase abstract : public ContainerControl
J#
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */
/** @attribute ComVisibleAttribute(true) */
public abstract class UpDownBase extends ContainerControl
JScript
public abstract class UpDownBase extends ContainerControl
Comentarios

Un cuadro de número está formado por un cuadro de texto y una pequeña barra de desplazamiento vertical que comúnmente se denomina control de botón de número. La clase UpDownBase enlaza ambos controles y permite al usuario cambiar la información del cuadro de texto al hacer clic en los botones Arriba o Abajo o al escribir el tipo de valor correcto directamente en el cuadro de texto. Utilice el cuadro de número cuando desee limitar la lista de valores que puede seleccionar un usuario, como ocurre en un cuadro de lista o un cuadro combinado. En función del tipo de lista que desee mostrar, la ventaja de utilizar un cuadro de número es que permite establecer rápidamente un intervalo de valores válidos, en lugar de agregar los elementos de uno en uno. La implementación de un cuadro de número requiere una validación de datos menor que la de un cuadro de texto, ya que se puede limitar el tipo de datos al derivar una clase de UpDownBase. Un ejemplo es la clase NumericUpDown, que limita los valores al tipo numérico y utiliza una propiedad Minimum y Maximum para validar los datos.

Para que el usuario pueda utilizar las teclas de dirección para cambiar el contenido del cuadro de número, establezca la propiedad InterceptArrowKeys en true. Para limitar la entrada del usuario a los valores que se especifiquen, establezca la propiedad ReadOnly en true. Para controlar la alineación de texto en el cuadro de número, establezca la propiedad TextAlign. Para establecer la alineación de los botones Arriba y Abajo en relación con la parte de cuadro de texto del control, establezca la propiedad UpDownAlign en Left o Right.

Cuando se omiten los métodos UpButton y DownButton, se controla la acción del clic en los botones Arriba y Abajo. Al omitirse, los métodos ValidateEditText y UpdateEditText validan el valor (seleccionado o escrito) y actualizan el texto que aparece en el cuadro de número. Si el valor no pasa la validación, utilice el método Select para seleccionar el texto no válido. De este modo, el usuario podrá corregir rápidamente el texto con sólo escribir un nuevo valor, sin tener que seleccionar o eliminar manualmente el texto existente.

Notas para los herederos:

Al heredar de UpDownBase, es necesario reemplazar los siguientes miembros:DownButton, UpButton, UpdateEditText y ValidateEditText.

Ejemplos

El siguiente ejemplo de código utiliza la clase derivada NumericUpDown y establece algunas de sus propiedades derivadas de UpDownBase. Este código requiere que tenga un control NumericUpDown denominado numericUpDown1, dos controles ComboBox denominados comboBox1 y comboBox2, y tres controles CheckBox denominados checkBox1, checkBox2 y checkBox2 creados en un formulario. Agregue los elementos siguientes a comboBox1: None, Fixed3D y FixedSingle. Agregue los elementos siguientes a comboBox2: Left, Right y Center.

El código permite cambiar los valores de la propiedad en tiempo de ejecución y ver cómo afecta cada uno a la apariencia y al comportamiento del cuadro de número.

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;
     }
 }



Visual C++
void comboBox1_SelectedIndexChanged( Object^ sender, EventArgs^ e )
{
   // Set the BorderStyle property.
   if (  !String::Compare( comboBox1->Text, "Fixed3D" ) )
   {
      numericUpDown1->BorderStyle = System::Windows::Forms::BorderStyle::Fixed3D;
   }
   else
   if (  !String::Compare( comboBox1->Text, "None" ) )
   {
      numericUpDown1->BorderStyle = System::Windows::Forms::BorderStyle::None;
   }
   else
   if (  !String::Compare( comboBox1->Text, "FixedSingle" ) )
   {
      numericUpDown1->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle;
   }
}

void comboBox2_SelectedIndexChanged( Object^ sender, EventArgs^ e )
{
   // Set the TextAlign property.    
   if (  !String::Compare( comboBox2->Text, "Right" ) )
   {
      numericUpDown1->TextAlign = HorizontalAlignment::Right;
   }
   else
   if (  !String::Compare( comboBox1->Text, "Left" ) )
   {
      numericUpDown1->TextAlign = HorizontalAlignment::Left;
   }
   else
   if (  !String::Compare( comboBox1->Text, "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;
   }
}


J#
    private void comboBox1_SelectedIndexChanged(Object sender, EventArgs e)
    {
        // Set the BorderStyle property.
        if (comboBox1.get_Text().Equals("Fixed3D")) {
            numericUpDown1.set_BorderStyle(BorderStyle.Fixed3D);
        }
        else {
            if (comboBox1.get_Text().Equals("None")) {
                numericUpDown1.set_BorderStyle(BorderStyle.None);
            }
            else {
                if (comboBox1.get_Text().Equals("FixedSingle")) {
                    numericUpDown1.set_BorderStyle(BorderStyle.FixedSingle);
                }
            }
        }        
    }//comboBox1_SelectedIndexChanged

    private void comboBox2_SelectedIndexChanged(Object sender, EventArgs e)
    {
        // Set the TextAlign property.    
        if (comboBox2.get_Text().Equals("Right")) {
            numericUpDown1.set_TextAlign(HorizontalAlignment.Right);
        }
        else {
            if (comboBox2.get_Text().Equals("Left")) {
                numericUpDown1.set_TextAlign(HorizontalAlignment.Left);
            }
            else {
                if (comboBox2.get_Text().Equals("Center")) {
                    numericUpDown1.set_TextAlign(HorizontalAlignment.Center);
                }
            }
        }
    } //comboBox2_SelectedIndexChanged

    private void checkBox1_Click(Object sender, EventArgs e)
    {
        // Evaluate and toggle the ReadOnly property.
        if (numericUpDown1.get_ReadOnly()) {
            numericUpDown1.set_ReadOnly(false);
        }
        else {
            numericUpDown1.set_ReadOnly(true);
        }
    } //checkBox1_Click

    private void checkBox2_Click(Object sender, EventArgs e)
    {
        // Evaluate and toggle the InterceptArrowKeys property.
        if (numericUpDown1.get_InterceptArrowKeys()) {
            numericUpDown1.set_InterceptArrowKeys(false);
        }
        else {
            numericUpDown1.set_InterceptArrowKeys(true);
        }
    } //checkBox2_Click

    private void checkBox3_Click(Object sender, EventArgs e)
    {
        // Evaluate and toggle the UpDownAlign property.
        if (numericUpDown1.get_UpDownAlign().Equals(LeftRightAlignment.Left)) {
            numericUpDown1.set_UpDownAlign(LeftRightAlignment.Right);
        }
        else {
            numericUpDown1.set_UpDownAlign(LeftRightAlignment.Left );
        }
    } //checkBox3_Click
} //Form1 


Jerarquía de herencia

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
Seguridad para subprocesos

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Plataformas

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Pocket PC

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Información de versión

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0
Vea también

Referencia