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

发布于 2024-09-14 08:18:25 字数 133 浏览 5 评论 0原文

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

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

I'm letting users select a date/time for a scheduled task to run, using two NumericUpDowncontrols.

I'd like one-digit values to be padded with a leading 0, so as to display 09:00 instead of 9:0.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

剩一世无双 2024-09-21 08:18:25

最终的解决方案是使用 DateTimePicker,将 ShowUpDown 设置为 True,并将 Format 设置为 Time< /code> 或自定义。在后一种情况下,您可以使用 hh:mmHH:mm 作为自定义格式。

The definitive solution is to use a DateTimePickerwith ShowUpDown set to True and Format set to Time or Custom. In the latter case, you'd use hh:mm or HH:mm as a custom format.

眼眸 2024-09-21 08:18:25
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。

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);
        }
    }
}

I had to do this this morning and came up with a Customised Numeric Up Down for my Windows Forms application. You should be able to change this easily enough to VB.NET.

苏大泽ㄣ 2024-09-21 08:18:25

这对于 NumericUpDown 控件来说是不可能的。

This is not possible with a NumericUpDown Control.

不寐倦长更 2024-09-21 08:18:25

我有一个好主意~
为什么不放置一个文本框来覆盖 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

I have a clever idea~
Why don't you put a textbox covering the textbox part of the numericupdown control (only the scroll of numericupdown will be shown)?

Set your textbox with "00" as the initial value, then disable it, so that the user can't control your textbox.

Then type these codes:

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
拍不死你 2024-09-21 08:18:25
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;
      }
   }
}
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;
      }
   }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文