C# 我可以在NumericUpDown控件中隐藏值吗?

C# 我可以在NumericUpDown控件中隐藏值吗?,c#,winforms,numericupdown,C#,Winforms,Numericupdown,假设我们在控件的值字段中显示了0,我希望如果值是0,则显示string.Empty(我知道值的类型是decimal,不能插入字符串而不是小数,但仍然…可能存在一些格式?).对更改格式的支持似乎非常有限 我自己也没试过。但是您可以创建一个子类并重写updateditext方法来支持自定义格式。大概是这样的: protected override void UpdateEditText() { this.Text = Value.ToString(); // Insert your forma

假设我们在控件的值字段中显示了
0
,我希望如果值是
0
,则显示
string.Empty
(我知道值的类型是decimal,不能插入字符串而不是小数,但仍然…可能存在一些格式?).

对更改格式的支持似乎非常有限

我自己也没试过。但是您可以创建一个子类并重写
updateditext
方法来支持自定义格式。大概是这样的:

protected override void UpdateEditText()
{
   this.Text = Value.ToString(); // Insert your formatting here
}
注意:这取决于
NumericUpDown
的当前实现

您需要做的是创建一个从
NumericUpDown
继承的新控件,以便:

public partial class SpecialNumericUpDown : NumericUpDown
{
    public SpecialNumericUpDown()
    {
        InitializeComponent();
    }

    protected override void UpdateEditText()
    {
        if (this.Value != 0)
        {
            base.UpdateEditText();
        }
        else
        {
            base.Controls[1].Text = "";
        }
    }
}

如果您只想对用户隐藏值,可以将
ForeColor
设置为与
BackColor
相同,以便
NumericUpDown
中的值对用户不可见

public partial class SpecialNumericUpDown : NumericUpDown
{
    public SpecialNumericUpDown()
    {
        InitializeComponent();
    }

    protected override void UpdateEditText()
    {
        if (this.Value != 0)
        {
            base.UpdateEditText();
        }
        else
        {
            base.Controls[1].Text = "";
        }
    }
}