Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在数字上下控制(C#)中显示前导零_C#_Visual Studio 2008_Controls - Fatal编程技术网

在数字上下控制(C#)中显示前导零

在数字上下控制(C#)中显示前导零,c#,visual-studio-2008,controls,C#,Visual Studio 2008,Controls,我在C#Windows窗体上有一个numericupdown控件,如果它小于10,我想在它的值上加一个前导零。(由用户输入时间的分钟值。) 我对C#中的覆盖/继承还不是很熟悉,但看起来我可能不得不这么做 看起来EggheadCafe有我需要的答案。它是否像创建一个新类然后创建该新类的控件那样简单 public class TestNum : NumericUpDown { protected override void ValidateEditText() { if (base.UserEdit

我在C#Windows窗体上有一个numericupdown控件,如果它小于10,我想在它的值上加一个前导零。(由用户输入时间的分钟值。)

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

看起来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");
}
}
当我尝试这个时,我不知道如何创建利用这个类的新控件。我正在使用VisualStudio2008。对windows窗体来说仍然很新。谢谢你的建议

编辑


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

更改:

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


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


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

您需要在窗体中使用新创建的类。它不是取代所有的NumericUpDown控件,它是一个子类


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

为什么不使用
日期时间选择器
控件?将其
ShowNumericUpDown
属性设置为true,将其
Format
属性设置为Custom,并将
CustomFormat
属性设置为hh:mm:ss


也许这对您很有用。

为什么不使用
日期时间选择器
控件呢?将其
ShowNumericUpDown
属性设置为true,将其
Format
属性设置为Custom,并将
CustomFormat
属性设置为hh:mm:ss


也许这会对您有用。

通过查找“带前导零的数字上下显示十六进制”偶然发现了这一点


通过查找“带前导零的NumericUpDown显示十六进制”偶然发现了这一点


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

  • 格式=自定义
  • CustomFormat=“hh:mm:ss”
  • 决战=真

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

  • 格式=自定义
  • CustomFormat=“hh:mm:ss”
  • 决战=真

  • UI控件类必须包含在单独编译的程序集中(它才能出现在工具箱中并可用于VS),因此它必须包含在自己的项目中。不幸的是,Cecil似乎有一个正确的名称,似乎没有办法将此控件添加到工具箱中。我可以通过编辑设计器创建的代码来实现这一点,为了清晰起见,我将对其进行编辑。谢谢你的帮助!UI控件类必须包含在单独编译的程序集中(它才能出现在工具箱中并可用于VS),因此它必须包含在自己的项目中。不幸的是,Cecil似乎有一个正确的名称,似乎没有办法将此控件添加到工具箱中。我可以通过编辑设计器创建的代码来实现这一点,为了清晰起见,我将对其进行编辑。谢谢你的帮助!这是个好主意,我不知道我能做到+1为了寻求帮助,尽管我最终发现了一种方法来实现对numericupdown的更改。这是一个好主意,但我没有意识到我可以做到这一点+1的帮助,虽然我最终发现了一种方法来实现对numericupdown的更改。
    this.numTest = new SampleForm.TestNum();
    private TestNum numTest;
    
    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;
     }