2010-08-17 6 views
7

Я разрешаю пользователям выбирать дату/время для запланированной задачи, используя два элемента управления NumericUpDown.Отображение `00` вместо` 0` в элементе управления NumericUpDown

Я хотел бы, чтобы однозначные значения были дополнены ведущим 0, чтобы отображать 09:00 вместо 9:0.

ответ

6

Окончательным решение заключается в использовании DateTimePicker с ShowUpDown набором для True и Format набора для Time или Custom. В последнем случае вы должны использовать hh:mm или HH:mm как пользовательский формат.

2

Это невозможно с помощью элемента управления NumericUpDown.

+0

Спасибо! Тогда мне придется использовать «DomainUpDown». –

2

У меня есть умная идея ~ Почему бы вам не поместить текстовое поле, покрывающее часть текстового поля элемента управления numericupdown (будет отображаться только прокрутка numericupdown)?

Установите текстовое поле с «00» в качестве начального значения, затем отключите его, чтобы пользователь не мог управлять вашим текстовым полем.

Затем введите эти коды:

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

Yup, но это немного хакерский, не очень чистый. Наверное, вы, скорее всего, будете использовать ярлык, а не текстовое поле. –

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

Я должен был сделать это сегодня утром и придумал индивидуальный номер вверх для моего приложения Windows Forms. Вы должны иметь возможность изменить это достаточно легко на 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; 
     } 
    } 
}