Отображение " 00 "вместо" 0 " в элементе управления NumericUpDown
Я позволяю пользователям выбирать дату / время для выполнения запланированной задачи, используя два NumericUpDown
управление.
Я хотел бы, чтобы однозначные значения были дополнены ведущим 0, чтобы отобразить 09:00
вместо 9:0
.
5 ответов
окончательное решение заключается в использовании DateTimePicker
с ShowUpDown
значение True
и Format
значение Time
или Custom
. В последнем случае вы бы использовали hh:mm
или HH:mm
как пользовательский формат.
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.
У меня есть умная идея~ Почему бы вам не поместить текстовое поле, охватывающее часть textbox элемента управления 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
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;
}
}
}