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

时间:2009-08-31 17:21:55

标签: c# visual-studio-2008 controls

我在C#Windows窗体上有一个numericupdown控件,并且有兴趣在其值为< 10.(由用户输入一段时间的分钟值。)

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

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

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窗体来说还是非常新的。谢谢你的任何建议。

修改

我能够通过编辑Designer创建的代码来完成这项工作,这样新的控件就不再是原始类的新控件了。所以在添加上面的类后,我做了以下(这些更改位于两个不同的位置,但我只显示重要的行):

更改:

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

要:

this.numTest = new SampleForm.TestNum();
private TestNum numTest;

4 个答案:

答案 0 :(得分:8)

为什么不使用DateTimePicker控件?将其ShowNumericUpDown属性设置为true并将其Format属性设置为Custom,并将CustomFormat属性设置为hh:mm:ss。

也许这对你有用。

答案 1 :(得分:2)

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

将包含此类的项目添加到工具箱(Tools-> Toolbox Items ... - 如果内存服务),您应该能够将控件拖到要使用它的表单上。

答案 2 :(得分:0)

通过寻找" 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;
 }

答案 3 :(得分:-5)

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

  1. Format = Custom
  2. CustomFormat =" hh:mm:ss"
  3. ShowUpDown = True