假设我们在控件的值字段中显示0
,我希望如果值为0
- 显示string.Empty
(我知道值的类型是十进制,可以没有插入字符串而不是小数,但仍然......也许有可能存在一些格式?)。
答案 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)
如果您只想隐藏用户的值,则可以ForeColor
与BackColor
相同,以便NumericUpDown
中的值对用户不可见。