代码之家  ›  专栏  ›  技术社区  ›  JYelton Melchior Blausand

在NumericUpDown控件(C)中显示前导零

  •  1
  • JYelton Melchior Blausand  · 技术社区  · 15 年前

    我在C Windows窗体上有一个NumericUpDown控件,如果值为<10,我希望在其值中添加前导零。(用户可以输入时间的分钟值。)

    我还不太熟悉C中的覆盖/继承,但看起来我可能不得不这样做。

    看起来像 this post 在Eggheadcafe上有我需要的答案。它是否和创建一个新类,然后创建一个新类的控件一样简单?

    public class TestNum : NumericUpDown
    {
    protected override void ValidateEditText()
    {
    if (base.UserEdit)
    {
    base.ValidateEditText();
    }
    }
    
    protected override void UpdateEditText()
    {
    Text = Convert.ToInt32(base.Value).ToString("00");
    }
    }
    

    当我尝试这个时,我不知道如何创建利用这个类的新控件。我正在使用Visual Studio 2008。对Windows窗体还是很新的。谢谢你的建议。

    编辑

    我可以通过编辑设计器创建的代码来完成这项工作,这样,它就不是原始类的新控件,而是新控件。因此,在添加了上面的类之后,我做了以下操作(这些更改位于两个不同的位置,但我只显示重要的行):

    改变:

    this.numTest = new System.Windows.Forms.NumericUpDown();
    private System.Windows.Forms.NumericUpDown numTest;
    

    到:

    this.numTest = new SampleForm.TestNum();
    private TestNum numTest;
    
    4 回复  |  直到 8 年前
        1
  •  2
  •   Niax    15 年前

    您需要在表单中使用这个新创建的类。它不会替换所有NumericUpDown控件,它是一个子类。

    将包含此类的项目添加到工具箱(工具->工具箱项…-如果内存可用),您应该能够将控件拖到要使用它的窗体上。

        2
  •  8
  •   Alex    8 年前

    为什么不使用 DateTimePicker 控制?设置其 ShowNumericUpDown 属性为true并设置其 Format 属性自定义并设置 CustomFormat 属性设置为hh:mm:ss。

    也许这对你有用。

        3
  •  0
  •   Baby Groot Duleendra    10 年前

    通过查找“numericupdown display hex with leading zero”偶然发现了这个问题。

    public class HexNumericUpDown : System.Windows.Forms.NumericUpDown
    {
        public HexNumericUpDown()
        {
            Hexadecimal = true;
        }
    
        protected override void ValidateEditText()
        {
            if (base.UserEdit)
            {
                base.ValidateEditText();
            }
        }
    
        protected override void UpdateEditText()
        {
            Text = System.Convert.ToInt64(base.Value).ToString("X" + HexLength);
        }
    
        [System.ComponentModel.DefaultValue(4)]
        public int HexLength
        {
            get { return m_nHexLength; }
            set { m_nHexLength = value; }
        }
    
        public new System.Int64 Value
        {
            get { return System.Convert.ToInt64(base.Value); }
            set { base.Value = System.Convert.ToDecimal(value); }
        }
    
        private int m_nHexLength = 4;
     }
    
        4
  •  -5
  •   Highmastdon Fis    10 年前

    使用具有以下属性的日期时间选取器:

    1. 格式化=自定义
    2. customFormat=“时:分:秒”
    3. showupdown=真