在NumericUpDown控件中显示“00”而不是“0”

时间:2010-08-17 11:58:55

标签: vb.net datetime padding numericupdown

我让用户使用两个NumericUpDown控件选择运行计划任务的日期/时间。

我希望用前导0填充一位数值,以便显示09:00而不是9:0

5 个答案:

答案 0 :(得分:6)

最终解决方案是使用DateTimePicker ShowUpDown设置为TrueFormat设置为TimeCustom。在后一种情况下,您可以使用hh:mmHH:mm作为自定义格式。

答案 1 :(得分: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窗体应用程序提供了一个Customized Numeric Up Down。您应该能够轻松地将其更改为VB.NET。

答案 2 :(得分:2)

使用NumericUpDown控件无法实现这一点。

答案 3 :(得分: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

答案 4 :(得分:-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;
      }
   }
}