2010-08-17 8 views

risposta

6

La soluzione definitiva è utilizzare un DateTimePicker con ShowUpDown set di True e Format set di Time o Custom. In quest'ultimo caso, devi utilizzare hh:mm o HH:mm come formato personalizzato.

2

Questo non è possibile con un controllo NumericUpDown.

+0

Grazie! Dovrò usare un 'DomainUpDown' quindi. –

2

Ho un'idea geniale ~ Perché non si mette una casella di testo che copre la parte della casella di testo del controllo numerico (verrà mostrato solo lo scroll di numericupdown)?

Imposta la tua casella di testo con "00" come valore iniziale, quindi disabilitala, in modo che l'utente non possa controllare la tua casella di testo.

Poi digitare questi codici:

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ì, ma questo è un po 'hacker, non molto pulito. Immagino che molto probabilmente useresti un'etichetta, non una casella di testo. –

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

Ho dovuto farlo stamattina e ho trovato un valore numerico personalizzato per la mia applicazione Windows Form. Dovresti essere in grado di cambiarlo abbastanza facilmente da 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; 
     } 
    } 
} 
Problemi correlati