2010-07-30 10 views
5

Digamos que tenemos 0 en el campo de valor del control y quiero que si el valor es 0 - muestre string.Empty (Sé que el tipo de valor es decimal y no puede haber ninguna cadena insertada en lugar de decimales, pero Todavía ... ¿Tal vez hay algún formato posible allí?).¿Puedo ocultar el valor en el control NumericUpDown?

Respuesta

4

Nota: Esto depende de la implementación actual del NumericUpDown.

Lo que hay que hacer es crear un nuevo control que hereda de NumericUpDown tal que:

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

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

Parece que hay un soporte muy limitado para cambiar el formato.

No he probado esto por mi cuenta. Pero podría crear una subclase y anular el método UpdateEditText para admitir su formato personalizado. Algo como esto:

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

Si sólo desea ocultar el valor del usuario, se puede hacer ForeColor lo mismo que BackColor por lo el valor dentro de NumericUpDown será invisible para el usuario.

Cuestiones relacionadas