2010-07-30 4 views
5

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?

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.