自定义TextBox,在C#.NET中接受Decimal

时间:2012-10-12 11:10:55

标签: c# windows user-controls decimal

我使用C#.NET为Windows应用程序创建了一个自定义TextBox。它必须接受小数(浮点数),如8.32和16.002。

我构建了以下算法。它只接受纯数字。我无法弄清楚如何让它接受浮动。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace SmartTextBoxLib
{
    public partial class SmartTextBox : TextBox
    {
        public SmartTextBox()
        {
            InitializeComponent();
        }
        protected override void OnKeyPress(KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
            base.OnKeyPress(e);
        }
    }
}

3 个答案:

答案 0 :(得分:1)

使用

System.Windows.Forms.NumericUpDown 

相反,它会为你做到这一点。

答案 1 :(得分:1)

您可以使用:

if (!char.IsDigit(e.KeyChar) && e.KeyChar != '.')
    e.Handled = true;
base.OnKeyPress(e);

允许数字字符或.。 如果你使用它来分隔小数,你可以使它,


或者,你可以这样做:

decimal value;
e.Handled = !decimal.TryParse((sender as TextBox).Text + e.KeyChar, out value);
base.OnKeyPress(e);

答案 2 :(得分:0)

您可以使用MaskedTextBox代替文本框控件。

在MaskedTextBox控件上定义Mask属性:

maskedTextBoxInstance.Mask = "99.000";