C# 格式化文本框以仅接受数字、空格和加号
我正在尝试创建一个只接受数字、空格和加号的C# 格式化文本框以仅接受数字、空格和加号,c#,.net,winforms,C#,.net,Winforms,我正在尝试创建一个只接受数字、空格和加号的文本框 目前我在文本框的KeyPressEvent中做过类似的事情 if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar) &&!char.IsWhiteSpace(e.KeyChar)) { e.Handled = true; } 我也想接受+符号 更新 我确实处理了!char.IsSymbol(e.KeyCh
文本框
目前我在文本框的KeyPressEvent
中做过类似的事情
if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar) &&!char.IsWhiteSpace(e.KeyChar))
{
e.Handled = true;
}
我也想接受+
符号
更新
我确实处理了!char.IsSymbol(e.KeyChar)
但它将接受=
符号以及+
任何帮助
谢谢严格来说,您可以附加
&& !e.KeyChar == '+'
根据您的标准,它应该在键盘输入方面起作用,但如果目标是只允许数字输入,.net控件库还包含一个数字上下控件,可以实现这一功能。严格来说,您可以附加
&& !e.KeyChar == '+'
根据您的标准,它应该在键盘输入方面起作用,但如果目标是只允许数字输入,.net控件库还包含一个数字上下控件,可以实现此功能。对于“输入期间”控件和验证控件,您可以这样做
但是你的文本框中有很多东西(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);
};
textBox.KeyDown+=(发件人,e)=>
{
如果((
//"+
e、 KeyCode==键。添加| |
//数字的
(e.KeyCode>=Keys.NumPad0和&e.KeyCode
{
var regex=新的regex(@“[^0-9\+]+”);
textBox.Text=regex.Replace(textBox.Text,string.Empty);
};
对于“输入期间”控件和验证控件,您可以这样做
但是你的文本框中有很多东西(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);
};
textBox.KeyDown+=(发件人,e)=>
{
如果((
//"+
e、 KeyCode==键。添加| |
//数字的
(e.KeyCode>=Keys.NumPad0和&e.KeyCode
{
var regex=新的regex(@“[^0-9\+]+”);
textBox.Text=regex.Replace(textBox.Text,string.Empty);
};
已添加
var reg=new Regex(@“^\+?(\d[\d-.]+)?(\([\d-.]+\)?[\d-.]+\d$”);
添加了正则表达式
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;
}
我添加了char.IsControl,因为它允许您在类型错误情况下使用退格。这对我来说很好:
if (!(char.IsLetter(e.KeyChar) && (!char.IsControl(e.KeyChar)
&& !char.IsDigit(e.KeyChar) && !(e.KeyChar == '.'))
{
e.Handled = true;
}
我添加了CAR.ISCONTROL,因为它允许您在Type错误情况下使用退格。
在什么面向最终用户的技术中?Win Frase:html?如果有人试图从剪贴板粘贴?您应该考虑使用验证事件。OARD?你应该考虑使用验证事件。查阅NavigiUpDead不允许+或空白。真的,我在回复中看到目标是一个电话号码。MaskDeTrbox可以做到这一点,但它会限制格式,所以我认为这也不够。电话号码?他说空白和+我希望人们WO。我会问他们真正想要回答的问题…Numericupdown不允许+或空格。是的,我在回答中读到目标是电话号码。maskedtextbox可以做到这一点,但它会限制格式,所以我认为这也不够。电话号码?他说是空格+我希望人们能问这个问题他们真的想要回答的问题…谢谢你的回答,实际上我正在尝试使这个文本框接受电话号码,然后在验证事件中生成一个“true”正则表达式,不应该太难谢谢你的回答,实际上我正在尝试使这个文本框接受电话号码,然后生成一个“true”验证事件中的正则表达式不应该太难