0

我使用 C#.NET 为 Windows 应用程序创建了一个自定义文本框。它必须接受十进制(浮点数),如 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);
        }
    }
}
4

3 回答 3

1

使用

System.Windows.Forms.NumericUpDown 

相反,它会为您执行此操作。

于 2012-10-12T11:15:22.793 回答
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);
于 2012-10-12T11:29:20.757 回答
0

您可以使用MaskedTextBox代替 Texbox 控件。

在 MaskedTextBox 控件上定义了 Mask 属性:

maskedTextBoxInstance.Mask = "99.000";
于 2012-10-12T11:31:24.783 回答