我让用户使用两个NumericUpDown
控件选择计划任务运行的日期/时间。
我希望一位数字的值在前面加上0,以显示09:00
而不是9:0
。
我让用户使用两个NumericUpDown
控件选择计划任务运行的日期/时间。
我希望一位数字的值在前面加上0,以显示09:00
而不是9:0
。
最终的解决方案是使用一个 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表单应用程序创建了一个定制的数字上下文。您应该能够轻松地将其更改为VB.NET。
我有一个聪明的想法~ 为什么不在numericupdown控件的textbox部分上放置一个文本框(只显示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
DomainUpDown
。 - Clémentclass MyNumericUpDown : System.Windows.Forms.NumericUpDown
{
public override string Text
{
get
{
return base.Text;
}
set
{
if (value.Length < 2)
value = "0" + value;
base.Text = value;
}
}
}