2

NumericUpDown 似乎只处理整数。我怎样才能修改它(?),所以我可以使用双精度值和增量?

4

4 回答 4

2

NumericUpDown 适用于十进制类型,但仅在紧凑框架上为整数。这是 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 回答
0

我的代码在这里只是一个块代码(使用 Compact Framework 测试);

 private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == '.')
        {
            if (((TextBox)sender).Text.IndexOf('.') > -1)
            {
                e.Handled = true;
            }
            else if (((TextBox)sender).Text.Length == 0)
            {
                e.Handled = true;
            }
        }
        else if (!char.IsDigit(e.KeyChar))
        {
            e.Handled = true;
        }

        if (e.KeyChar == '\b')  // backspace silme tuşunun çalıması için gerekli
        {
            e.Handled = false;
        }

        base.OnKeyPress(e);
    }

顺便说一句,我讨厌 Compact Framework。因为太有限了!但我不得不 :(

于 2015-10-16T11:50:12.310 回答