Отображать `00` вместо` 0` в элементе управления NumericUpDown - PullRequest
7 голосов
/ 17 августа 2010

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

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

отображалось 09:00.

Ответы [ 5 ]

6 голосов
/ 17 февраля 2011

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

3 голосов
/ 14 июля 2011
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.

2 голосов
/ 17 февраля 2011

У меня есть умная идея ~ Почему бы вам не поместить текстовое поле, покрывающее часть текстового поля элемента управления 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
2 голосов
/ 17 августа 2010

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

0 голосов
/ 04 июня 2013
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;
      }
   }
}
...