2

NumericUpDown は整数のみを扱っているようです。どうすれば変更できますか (?)、値とインクリメントとして double を使用できますか?

4

4 に答える 4

2

NumericUpDown は 10 進数型で機能しますが、コンパクト フレームワークでのみ整数になります。これは CF 上のクラスの制限です。

ただし、CF の実装を提供するCodeProject UserControlがあります。

于 2009-08-24T20:16:59.700 に答える
2

テキストボックスを使用して、OnKeyPress イベントをオーバーライドします。このコードは以前はうまくいきましたが、1234,56 ではなく 1234.56 を書いているグループにのみ有効です。

public partial class NumberTextBox : TextBox
{
    public NumberTextBox()
    {
        InitializeComponent();
    }

    public decimal Value
    {
        get
        {
            try
            {
                return decimal.Parse(Text);
            }
            catch (Exception)
            {
                return -1;
            }
        }
    }

    public int ValueInt
    {
        get { return int.Parse(Text); }
    }

    protected override void OnKeyPress(KeyPressEventArgs e)
    {
        if (!char.IsControl(e.KeyChar)
            && !char.IsDigit(e.KeyChar)
            && e.KeyChar != '.')
        {
            e.Handled = true;
        }

        // only allow one decimal point
        if (e.KeyChar == '.' && (this).Text.IndexOf('.') > -1)
        {
            e.Handled = true;
        }
        base.OnKeyPress(e);
    }

    public void AppendString(string value)
    {
        if (string.IsNullOrEmpty(value))
        {
            Text = string.Empty;
        }
        else
        {
            if (value == "." && Text.IndexOf('.') > -1)
                return;
            Text += value;
        }
    }
}
于 2009-08-25T15:14:11.973 に答える
0

DecimalPlaces というプロパティがあります。0より大きい値に設定すると、小数を扱うことができます

于 2009-08-24T20:15:21.967 に答える