我可以在NumericUpDown控件中隐藏Value吗?

时间:2010-07-30 07:53:22

标签: c# winforms numericupdown

假设我们在控件的值字段中显示0,我希望如果值为0 - 显示string.Empty(我知道值的类型是十进制,可以没有插入字符串而不是小数,但仍然......也许有可能存在一些格式?)。

4 个答案:

答案 0 :(得分:4)

注意:这取决于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 = "";
        }
    }
}

答案 1 :(得分:1)

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

我自己没试过。但您可以创建一个子类并覆盖UpdateEditText方法以支持您的自定义格式。像这样:

protected override void UpdateEditText()
{
   this.Text = Value.ToString(); // Insert your formatting here
}

答案 2 :(得分:1)

public partial class MyNumericUpDown : NumericUpDown
{
    public override string Text
    {
        get
        {
            if (base.Text.Length == 0)
            {
                return "0";
            }
            else
            {
                return base.Text;
            }
        }
        set
        {
            if (value.Equals("0"))
            {
                base.Text = "";
            }
            else
            {
                base.Text = value;
            }
        }
    }
}

答案 3 :(得分:-1)

如果您只想隐藏用户的值,则可以ForeColorBackColor相同,以便NumericUpDown中的值对用户不可见。