Actualización: noviembre 2007
Implementa la funcionalidad básica requerida por un cuadro de número (también conocido como un control de flechas).
Ensamblado: System.Windows.Forms (en System.Windows.Forms.dll)
<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _ <ComVisibleAttribute(True)> _ Public MustInherit Class UpDownBase _ Inherits ContainerControl
Dim instance As UpDownBase
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] [ComVisibleAttribute(true)] public abstract class UpDownBase : ContainerControl
[ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)] [ComVisibleAttribute(true)] public ref class UpDownBase abstract : public ContainerControl
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */ /** @attribute ComVisibleAttribute(true) */ public abstract class UpDownBase extends ContainerControl
public abstract class UpDownBase extends ContainerControl
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.
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.
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
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; } }
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; } }
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
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
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.