5


1

NumericUpDownコントロールでValueを非表示にできますか?

コントロールの値フィールドに「0」が表示されていて、値が「0」の場合、「string.Empty」を表示するとします(値のタイプが10進数であり、代わりに文字列を挿入できないことを知っていますその中の小数の、それでも…​ 多分そこにいくつかのフォーマットが可能ですか?)。

4 Answer


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


フォーマットの変更に対するサポートは非​​常に限られているようです。

私はこれを自分で試したことはありません。 しかし、サブクラスを作成し、 `UpdateEditText`メソッドをオーバーライドしてカスタム形式をサポートすることができます。 このようなもの:

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


ユーザーに対して値を非表示にするだけの場合、「ForeColor」を「BackColor」と同じにして、「NumericUpDown」内の値がユーザーに表示されないようにすることができます。