Diciamo che abbiamo 0
visualizzato nel campo valore del controllo e voglio che se il valore è 0
- display string.Empty
(so che il tipo di valore è decimale e non può essere inserita alcuna stringa al posto dei decimali, ma ancora ... Forse c'è qualche formattazione possibile lì?).Posso nascondere il valore nel controllo NumericUpDown?
5
A
risposta
4
Nota: Questo dipende dalla attuale implementazione di NumericUpDown
.
Quello che dovete fare è creare un nuovo controllo che eredita da NumericUpDown
tale che:
public partial class SpecialNumericUpDown : NumericUpDown
{
public SpecialNumericUpDown()
{
InitializeComponent();
}
protected override void UpdateEditText()
{
if (this.Value != 0)
{
base.UpdateEditText();
}
else
{
base.Controls[1].Text = "";
}
}
}
1
Sembra che ci sia solo un supporto molto limitato per cambiare la formattazione.
Non l'ho provato da solo. Ma potresti creare una sottoclasse e sovrascrivere il metodo UpdateEditText
per supportare il tuo formato personalizzato. Qualcosa di simile a questo:
protected override void UpdateEditText()
{
this.Text = Value.ToString(); // Insert your formatting here
}
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;
}
}
}
}
-1
Se desideri solo nascondere il valore da parte dell'utente, è possibile effettuare ForeColor
lo stesso di BackColor
così il valore all'interno di NumericUpDown
sarà invisibile all'utente.