设置文本框的格式以仅接受数字、空格和加号
本文关键字:数字 空格 置文本 格式 | 更新日期: 2023-09-27 18:36:06
我正在尝试制作一个只接受数字、空格和加号的text-box
。
目前,我已经在KeyPressEvent
中做了这样的事情textbox
if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar) &&!char.IsWhiteSpace(e.KeyChar))
{
e.Handled = true;
}
我也想接受+
标志
更新
我确实处理了!char.IsSymbol(e.KeyChar)
但它也会接受=
标志以及+
有什么帮助吗!!
谢谢
对于"输入期间"控制和验证控制,您可以制作类似的东西。
但是你的文本框里会有很多东西(1+++ +2 34+),这并不意味着很多......
textBox.KeyDown += (sender, e) =>
{
if (!(
//"+
e.KeyCode == Keys.Add ||
//numeric
(e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9) ||
//space
e.KeyCode == Keys.Space))
{
e.Handled = true;
}
};
textBox.Validating += (sender, eventArgs) =>
{
var regex = new Regex(@"[^0-9'+ ]+");
textBox.Text = regex.Replace(textBox.Text, string.Empty);
};
严格来说,你可以附加
&& !e.KeyChar == '+'
根据您的条件,它应该在键盘输入方面工作,但如果目标是只允许数字输入,.net 控件库还包含一个可以解决问题的 NumericUpDown 控件。
已添加
var reg = new Regex(@"^'+?('d['d-. ]+)?('(['d-. ]+'))?['d-. ]+'d$");
作为正则表达式
这对我来说很好用:
if (!(char.IsLetter(e.KeyChar) && (!char.IsControl(e.KeyChar)
&& !char.IsDigit(e.KeyChar) && !(e.KeyChar == '.'))
{
e.Handled = true;
}
我添加了字符。IsControl,因为它允许您在类型错误情况下使用退格键。