2010-08-17 13 views

Respuesta

6

La solución definitiva es utilizar un DateTimePicker con ShowUpDown conjunto de True y Format conjunto de Time o Custom. En este último caso, usaría hh:mm o HH:mm como un formato personalizado.

2

Esto no es posible con un control NumericUpDown.

+0

¡Gracias! Tendré que usar un 'DomainUpDown' luego. –

2

Tengo una idea inteligente ~ ¿Por qué no pones un cuadro de texto que cubre la parte del cuadro de texto del control de control numérico (solo se mostrará el desplazamiento numérico hacia abajo)?

Establezca su cuadro de texto con "00" como valor inicial, luego desactívelo, para que el usuario no pueda controlar su cuadro de texto.

continuación, escriba estos códigos:

Private Sub numericupdown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ndFrom.ValueChanged 

     If numericupdown1.Value < 10 Then 
      textbox1.Text = "0" & numericupdown1.Value 
     Else 
      textbox1.Text = numericupdown1.Value 
     End If 


End Sub 
+1

Sí, pero esto es un poco hackish, no muy limpio. Supongo que lo más probable es que uses una etiqueta, no un cuadro de texto. –

3
class CustomNumericUpDown:System.Windows.Forms.NumericUpDown 
{ 
    protected override void OnTextBoxTextChanged(object source, EventArgs e) 
    { 
     TextBox tb = source as TextBox; 
     int val = 0; 
     if (int.TryParse(tb.Text,out val)) 
     { 
      if (val < 10) 
      { 
       tb.Text = "0" + val.ToString(); 
      } 
     } 
     else 
     { 
      base.OnTextBoxTextChanged(source, e); 
     } 
    } 
} 

Tuve que hacer esto esta mañana y obtuve un Desplazamiento numérico personalizado para mi aplicación de Windows Forms. Debería poder cambiar esto fácilmente a VB.NET.

-1
class MyNumericUpDown : System.Windows.Forms.NumericUpDown 
{ 
    public override string Text 
    { 
     get 
     { 
     return base.Text; 
     } 
     set 
     { 
     if (value.Length < 2) 
      value = "0" + value; 

     base.Text = value; 
     } 
    } 
} 
Cuestiones relacionadas