代码之家  ›  专栏  ›  技术社区  ›  Clément

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

  •  7
  • Clément  · 技术社区  · 15 年前

    NumericUpDown 控制。

    我想用前导0填充一位数的值,以便显示 09:00 9:0 .

    5 回复  |  直到 14 年前
        1
  •  6
  •   Clément    14 年前

    最终的解决办法是使用 DateTimePicker ShowUpDown True Format 设置为 Time Custom . 在后一种情况下,您将使用 hh:mm HH:mm 作为自定义格式。

        2
  •  4
  •   LeeSalter    14 年前
    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版.

        3
  •  2
  •   0x90    15 年前

    使用NumericUpDown控件是不可能的。

        4
  •  2
  •   ajtrichards    13 年前

    为什么不在numericupdown控件的textbox部分放置一个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
    
        5
  •  -1
  •   Torben B.    12 年前
    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;
          }
       }
    }