在数字上下控制(C#)中显示前导零
我在C#Windows窗体上有一个numericupdown控件,如果它小于10,我想在它的值上加一个前导零。(由用户输入时间的分钟值。) 我对C#中的覆盖/继承还不是很熟悉,但看起来我可能不得不这么做 看起来EggheadCafe有我需要的答案。它是否像创建一个新类然后创建该新类的控件那样简单在数字上下控制(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
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显示十六进制”偶然发现了这一点
使用具有以下属性的日期时间选择器:
使用具有以下属性的日期时间选择器:
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;
}