我使用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);
}
}
}
答案 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)